Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >软件工程概述

软件工程概述

原创
作者头像
一个风轻云淡
修改于 2023-12-16 04:16:56
修改于 2023-12-16 04:16:56
6100
举报
文章被收录于专栏:java学习javajava学习java

知识点概述

软件工程是一门科学,它使用科学知识和系统化的技术原理来定义、开发和维护软件。其目标是成功地建造一个大型软件系统,达到要求的软件功能、性能、易移植性、低维护成本、按时交付和高可靠性。软件工程主要研究软件开发技术和软件开发管理两方面,在技术方面包括软件开发方法、过程、工具和环境,在管理方面包括软件管理学、经济学和心理学等。

软件文档的作用包括提高开发过程的可见度、提高效率、记录开发信息、提供用户资料,软件开发项目的生命周期各阶段应包括可行性研究报告、项目开发计划、需求说明书、测试计划、设计说明书、用户手册、操作手册、测试分析报告等。

软件过程模型有多种,如瀑布模型、快速原型模型、增量模型螺旋模型和喷泉模型,每种模型都有其特点、优缺点和适用场合。

软件生命周期包括问题定义、可行性研究、需求分析、总体设计、详细设计、编码、测试和运行与维护等阶段。

需求分析阶段的基本任务是准确定义新系统的目标,确定系统必须具备的功能,并编写相应的文档。

软件需求工程的基本任务是准确回答“软件系统必须做什么”的问题,使用需求建模技术逐步精细化用户需求。

可行性研究的任务是对项目进行综合分析、研究和评估,探讨项目是否可行、达成目标的可能性和可行性程度,发现问题及解决方案,最终得出可行性结论。

软件是程序和文档的组合,它包括代码和相关的文档,用于描述程序的功能、结构和使用方法。

什么是软件工程?它的目标和内容是什么?

软件工程是一种用科学知识和技术原理来定义、开发、维护软件的一门学科。目的是成功的建造一个大型软件系统,

所谓成功是要达到以下几个目标: 付出较低的开发成本,达到要求的软件功能; 取得较好的软件性能; 开发的软件易于移植; 需要较低的维护费用; 能按时完成开发任务,及时交付使用; 开发的软件可靠性高。

软件工程研究的主要内容是软件开发技术和软件开发管理两方面,在软件开发技术中,主要研究软件开发方法、软件开发过程、软件开发工具和环境。在软件开发管理中,主要研究软件管理学、软件经济学、软件心理学等。

软件文档作用及包含

软件文档的作用是:

  1. 提高软件开发过程的能见度;
  2. 提高开发效率;
  3. 作为开发人员阶段工作成果和结束标志;
  4. 记录开发过程的有关信息便于使用与维护;
  5. 提供软件运行、维护和培训有关资料;
  6. 便于用户了解软件功能、性能。

软件开发项目生存期各阶段应包括得文档以及与各类人员的关系如下:

  1. 可行性研究报告
  2. 项目开发计划
  3. 软件需求说明书
  4. 数据要求说明书
  5. 测试计划
  6. 概要设计说明书
  7. 详细设计说明书
  8. 用户手册
  9. 操作手册
  10. 测试分析报告
  11. 开发进度月报
  12. 项目开发总结
  13. 程序维护手册(维护修改建议)

软件过程模型 

瀑布模型

瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

1. 特点:

阶段间具有顺序性和依赖性。其中包含两重含义:①必须等前一阶段的工作完成之后,才能开始后一阶段的工作;②前一阶段的输出文档就是后一阶段的输入文档。

2. 优点:

①可强迫开发人员采用规范化的方法。 ②严格地规定了每个阶段必须提交的文档。 ③要求每个阶段交出的所有产品都必须是经过验证的。

3. 缺点:

①由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。如果需求规格说明与用户需求之间有差异,就会发生这种情况; ②瀑布模型只适用于项目开始时需求已确定的情况。

4. 适用场合:

需求明确且很少变更的项目,如二次开发或升级型项目。

快速原型模型

根据原型的不同作用,有三类原型模型:

⑴探索型原型。这种类型的原型模型是把原型用于开发的需求分析阶段,目的是要弄清用户的需求,确定所期望的特性,并探索各种方案的可行性。它主要针对开发目标模糊,用户与开发着对项目都缺乏经验的情况,通过对原型的开发来明确用户的需求。

⑵实验型原型。这种原型主要用于设计阶段,考核实现方案是否合适,能否实现,对于一个大型系统,若对设计方案心中没有把握时,可通过这种原型来证实设计方案的正确性。

⑶演化型原型。这种原型主要用于及早向用户提交一个原型系统,该原型系统或者包含系统的框或者包含系统的主要功能。在得到用户的认可后,将原型系统不断扩充演变为最终的软件系统,它将原型的思路扩展到软件开发的全过程。

1.特点:

快速构建可运行的软件模型,以便理解和澄清问题,进一步细化需求,在新获取需求基础上进行系统开发。

2.优点:

(1)有助于满足用户的真实需求; (2)原型系统已经通过与用户的交互而得到验证,据此产生的规格说明文档能够正确地描述用户需求; (3)软件产品的开发基本上是按线性顺序进行; (4)因为规格说明文档正确地描述了用户需求,因此,在开发过程的后续阶段不会因为发现规格说明文档的错误而进行较大的返工; (5)开发人员通过建立原型系统已经学到了许多东西,因此,在设计和编码阶段发生错误的可能性也比较小,这自然减少了在后续阶段需要改正前面阶段所犯错误的可能性; (6) 快速原型的突出特点是“快速”。开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。

3.缺点:

快速建立的模型加上连续的修改可能造成产品质量低下。

4.适用场合:

用户需求模糊不明的情况下。

增量模型

为了克服瀑布模型的局限性,使开发过程具有一定的灵活性和可修改性,于是产生了增量模型。它是在瀑布模型的基础上加以修改而形成的。增量模型和瀑布模型之间的本质区别是:瀑布模型属于整体开发模型,它规定在开始下一个阶段的工作之前,必须完成前一阶段的所有细节。而增量模型属于非整体开发模型,它推迟某些阶段或所有阶段中的细节,从而较早的产生工作软件。增量模型是在项目的开发过程中以一系列的增量方式开发系统。增量方式包括增量开发和增量提交。增量开发是指在项目开发周期内,以一定的时间间隔开发部分工作软件;增量提交是指在项目开发周期内,以一定的时间间隔增量方式向用户提交工作软件及相应文档。增量开发和增量提交可以同时使用,也可以单独使用。

1.特点及内容:

增量模型也称为渐增模型,是Mills等于1980年提出来的。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。

2.优点:

(1)能在较短时间内向用户提交可完成一些有用的工作产品,即从第1个构件交付之日起,用户就能做一些有用的工作。 (2)逐步增加产品的功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给用户组织带来的冲击。 (3)项目失败的风险较低,虽然在某些增量构件中可能遇到一些问题,但其他增量构件将能够成功地交付给客户。 (4)优先级最高的服务首先交付,然后再将其他增量构件逐次集成进来。因此,最重要的系统服务将接受最多的测试。

3.缺点:

(1)由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。 (2)在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。 (3)如果增量包之间存在相交的情况且未很好处理,则必须做全盘系统分析,这种模型将功能细化后分别开发的方法较适应于需求经常改变的软件开发过程。

4.使用场合:

需求经常发生改变的软件开发过程

5.针对的应用:

(1)进行已有产品升级或新版本开发,增量模型是非常适合的; (2)对完成期限严格要求的产品,可以使用增量模型; (3)对所开发的领域比较熟悉而且已有原型系统,增量模型也是非常适合的。

螺旋模型

1.特点:

该模型将瀑布模型与快速原型模型结合起来,并且加入两种模型均忽略了的风险分析。螺旋模型的基本思想是,使用原型及其他方法来尽量降低风险。

2.优点:

对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标。减少了过多测试或测试不足所带来的风险。在螺旋模型中维护只是模型的另一个周期,因而在维护和开发之间并没有本质区别。

3.缺点:

螺旋模型是风险驱动的,因此要求软件开发人员必须具有丰富的风险评估经验和这方面的专门知识,否则将出现真正的风险:当项目实际上正在走向灾难时,开发人员可能还以为一切正常。

4.适用场合:

支持需求不明确、特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。

喷泉模型

1.特点:

喷泉模型是典型的面向对象生命周期模型。“喷泉”一词体现了迭代和无间隙特性。

2.优点:

可以提升项目开发效率、缩短开发周期,因为喷泉模型各个阶段之间无间隙,没有顺序要求,开发人员可以同步开发;而且开发人员可以在某个开发阶段中随时补充遗漏的开发需求。

3.缺点:

难以管理,因为喷泉模型的各个阶段的开发是重叠的,所以需要大量的开发人员,所以不利于项目管理

4.适用场合:

用于采用对象技术的软件开发项目。 

软件生存周期

1) 问题定义: 问题定义阶段必须回答的关键问题是“要解决的问题是什么?”,正确理解用户的真正需求。 

2) 可行性研究:   这个阶段要回答的关键问题是:对于上一个阶段所确定的问题“有行得通的解决办法吗?” ,可行性研究阶段应该导出系统的高层逻辑模型,准确地估计系统的成本和效益。 

3) 需求分析:需求分析阶段的任务,主要是确定目标系统必须具备的功能,得出经用户确认的系统逻辑模型。根据该系统逻辑模型,准确地回答“为了解决这个问题,目标系统必须做什么”。

 4) 总体设计:也叫概要设计或初步设计。这个阶段必须回答的是“概括地说,应该如何解决这个问题”。总体设计的目标是将需求分析阶段定义的系统模型转换成相应的软件结构,以规定软件的形态及各成分间的层次关系、界面及接口要求。 

5) 详细设计:详细设计阶段的任务是把解法具体化,也就是回答“应该怎样具体地实现这个系统”。详细设计亦即模块设计。它是在算法设计和结构设计的基础上,针对每个模块的功能、接口和算法定义,设计模块内部的算法过程及程序的逻辑结构,并编写模块设计说明。

 6) 编码:这个阶段的任务,是根据详细设计的结果,选择一种适合的程序设计语言,把详细设计的结果翻译成程序的源代码。

7) 测试:以便尽早发现程序中的错误和缺陷而进行的一个过程,有单元测试集成测试、确认测试和系统测试4种。

8) 运行与维护:通过各种必要的维护措施支持软件系统能持久地满足用户的需要。维护阶段是软件生存周期中花费精力和费用最多的阶段

需求分析阶段的基本任务是什么? 

需求分析阶段的基本任务是要准确的定义新系统的目标,为了满足用户需要,回答系统必须“做什么”的问题。

本阶段要进行以下几方面的工作:

㈠问题识别。双方确定对问题的综合需求,这些需求包括:功能需求、性能需求、环境需求、用户界面需求,另外还有可靠性、安全性、保密性、可移植性、可维护性等方面的需求。

㈡分析与综合,导出软件的逻辑模型。分析人员对获取的需求,进行一致性的分析检查,在分析、综合中逐步细化软件功能,划分成各个子功能。这里也包括对数据域进行分解,并分配到各个子功能上,以确定系统的构成及主要成份,并用图文结合的形式,建立起新系统的逻辑模型。

㈢编写文档。编写“需求规格说明书”、编写初步用户使用手册、编写确认测试计划、修改完善软件开发计划

软件需求工程的基本任务是准确地回答“软件系统必须做什么?”这个问题。它在系统工程和软件设计之间起到桥梁的作用。用户对软件需求的描述不精确,导致软件危机。为了使用户需求逐步精细化,使用需求工程中需求建模技术。需求规格说明书在软件开发中具有重要的作用,它也可以作为软件可行性分析的依据。

需求建模的定义:用户需求逐步精细化、完全化、一致化,需求规格说明是软件工程测试的依据

可行性研究的任务是什么?

可行性研究是指在项目规划的初期,通过对项目进行综合分析、研究和评估,探讨项目是否可行、达成目标的可能性和可行性的程度,发现项目存在的问题及其解决方案,最终得出项目可行性的结论,并为项目实施提供决策参考。

具体步骤:首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把他们清楚地列举出来。然后,分析员进行简要的需求分析,抽象出该项目的逻辑结构,建立逻辑模型。从逻辑模型出发,经过压缩的设计,探索出若干种可供选择的主要解决方法,对每种解决方法都要研究它的可行性。

可从以下三个方面分析研究每种解决方法的可行性。

  1. ㈠技术可行性:对要开发项目的功能、性能、限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现。
  2. ㈡经济可行性:进行开发成本的估算以及了解取得效益的评估,确定要开发的项目是否值得投资开发。
  3. ㈢社会可行性:要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。

软件是什么?

软件=程序+文档

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Java】 JVM 如何保存 Java 对象
本文主要讲解一下在 JVM 中如何保存 Java 对象以及 Java 对象指针压缩相关的东西。
零式的天空
2022/03/27
1.2K0
全网最硬核 JVM 内存解析 - 2.JVM 内存申请与使用流程
Linux 内存管理模型不是咱们这个系列的讨论重点,我们这里只会简单提一些对于咱们这个系列需要了解到的,如果读者想要深入理解,建议大家查看 bin 神(公众号:bin 的技术小屋)的系列文章:一步一图带你深入理解 Linux 虚拟内存管理
干货满满张哈希
2023/05/01
1.1K0
全网最硬核 JVM 内存解析 - 2.JVM 内存申请与使用流程
全网最硬核 JVM 内存解析 - 1.从 Native Memory Tracking 说起
JVM 内存究竟包括哪些,可能网上众说纷纭。我们这里由官方提供的一个查看 JVM 内存占用的工具引入,即 Native Memory Tracking。不过要注意的一点是,这个只能监控 JVM 原生申请的内存大小,如果是通过 JDK 封装的系统 API 申请的内存,是统计不到的,例如 Java JDK 中的 DirectBuffer 以及 MappedByteBuffer 这两个(当然,对于这两个,我们后面也有其他的办法去看到当前使用的大小。当然xigao dog 啥都不会)。以及如果你自己封装 JNI 调用系统调用去申请内存,都是 Native Memory Tracking 无法涵盖的。这点要注意。
干货满满张哈希
2023/05/01
2K0
全网最硬核 JVM 内存解析 - 1.从 Native Memory Tracking 说起
全网最硬核 JVM 内存解析 - 3.大页分配 UseLargePages
前面提到了虚拟内存需要映射物理内存才能使用,这个映射关系被保存在内存中的页表(Page Table)。现代 CPU 架构中一般有 TLB (Translation Lookaside Buffer,翻译后备缓冲,也称为页表寄存器缓冲)存在,在里面保存了经常使用的页表映射项。TLB 的大小有限,一般 TLB 如果只能容纳小于 100 个页表映射项。 我们能让程序的虚拟内存对应的页表映射项都处于 TLB 中,那么能大大提升程序性能,这就要尽量减少页表映射项的个数:页表项个数 = 程序所需内存大小 / 页大小。我们要么缩小程序所需内存,要么增大页大小。我们一般会考虑增加页大小,这就大页分配的由来,JVM 对于堆内存分配也支持大页分配,用于优化大堆内存的分配。那么 Linux 环境中有哪些大页分配的方式呢?
干货满满张哈希
2023/05/01
1.1K0
全网最硬核 JVM 内存解析 - 3.大页分配 UseLargePages
全网最硬核 JVM 内存解析 - 8.元空间的核心概念与设计
从 Java 16 开始,引入了弹性元空间。老的元空间由于设计上分配粒度比较大,并且没有很好地释放空间的策略设计,所以占用可能比较大。Java 16 开始,JEP 387: Elastic Metaspace 引入了弹性元空间的设计,也是我们这里要讨论的设计。这个弹性元空间也引入了一个重要的参数 -XX:MetaspaceReclaimPolicy。
干货满满张哈希
2023/05/01
7980
全网最硬核 JVM 内存解析 - 8.元空间的核心概念与设计
全网最硬核 JVM 内存解析 - 11.元空间分配与回收流程举例
前文我们没有提到,如何限制元空间的大小,其实就是限制 commit 的内存大小。元空间的限制不只是受限于我们的参数配置,并且前面我们提到了,元空间的内存回收也比较特殊,元空间的内存基本都是每个类加载器的 ClassLoaderData 申请并管理的,在类加载器被 GC 回收后,ClassLoaderData 管理的这些元空间也会被回收掉。所以,GC 是可能触发一部分元空间被回收了。所以元空间在设计的时候,还有一个动态限制 _capacity_until_GC,即触发 GC 的元空间占用大小。当要分配的空间导致元空间整体占用超过这个限制的时候,尝试触发 GC。这个动态限制也会在每次 GC 的时候动态扩大或者缩小。动态扩大以及缩小
干货满满张哈希
2023/05/01
6960
全网最硬核 JVM 内存解析 - 11.元空间分配与回收流程举例
全网最硬核 JVM 内存解析 - 13.JVM 线程内存设计
Java 19 中 Loom 终于 Preview 了,虚拟线程(VirtualThread)是我期待已久的特性,但是这里我们说的线程内存,并不是这种 虚拟线程,还是老的线程。其实新的虚拟线程,在线程内存结构上并没有啥变化,只是存储位置的变化,实际的负载线程(CarrierThread)还是老的线程。
干货满满张哈希
2023/05/01
5470
全网最硬核 JVM 内存解析 - 13.JVM 线程内存设计
我们是怎样优化 V8 中的指针压缩的
作者:V8开发团队:Lgor Sheludko & Santiago Aboy Solanes
疯狂的技术宅
2020/04/24
1.3K0
我们是怎样优化 V8 中的指针压缩的
全网最硬核 JVM 内存解析 - 9.元空间内存分配流程
我们过一下元空间内存分配流程,我们会忽略一些 GC 相关的还有并发安全的细节,否则涉及的概念太多,一下说不过来,这些细节,会在以后的系列中详细提到。
干货满满张哈希
2023/05/01
4950
全网最硬核 JVM 内存解析 - 9.元空间内存分配流程
全网最硬核 JVM 内存解析 - 4.Java 堆内存大小的确认
不同的 GC 情况下,初始化以及扩展的流程可能在某些细节不太一样,但是,大体的思路都是:
干货满满张哈希
2023/05/01
1.2K0
全网最硬核 JVM 内存解析 - 4.Java 堆内存大小的确认
全网最硬核 JVM 内存解析 - 12.元空间各种监控手段
通过 jcmd <pid> VM.metaspace 命令可以查看对应 JVM 进程的元空间当前的详细使用情况,返回内容是:
干货满满张哈希
2023/05/01
1K0
全网最硬核 JVM 内存解析 - 12.元空间各种监控手段
全网最硬核 JVM 内存解析 - 7.元空间存储的元数据
JVM 在执行 Java 应用程序时,将加载的 Java 类的许多细节记录在内存中,这些信息称为类元数据(Class MetaData)。这些元数据对于 Java 的很多灵活的语言以及虚拟机特性都是很重要的,比如动态类加载、JIT 实时编译、反射以及动态代理等等。不同的 JVM 加载类保存的内存信息是不一样的,它们通常在更低的内存占用与更快的执行速度之间进行权衡(类似于空间还是时间的权衡)。对于 OpenJDK Hotspot 使用的则是相对丰富的元数据模型来获得尽可能快的性能(时间优先,不影响速度的情况下尽量优化空间占用)。相比于 C,C++,Go 这些离线编译为可执行二进制文件的程序相比,像 JVM 这样的托管运行时动态解释执行或者编译执行的,则需要保留更多关于正在执行的代码的运行时信息。原因如下:
干货满满张哈希
2023/05/01
1.1K0
全网最硬核 JVM 内存解析 - 7.元空间存储的元数据
全网最硬核 JVM 内存解析 - 6.其他 Java 堆内存相关的特殊机制
不同的 GC 堆大小动态伸缩有很大很大的差异(比如 ParallelGC 涉及 UseAdaptiveSizePolicy 启用的动态堆大小策略以及相关的 UsePSAdaptiveSurvivorSizePolicy、UseAdaptiveGenerationSizePolicyAtMinorCollection 等等等等的参数参与决定计算最新堆大小的方式以及时机),在这个系列以后的章节我们详细分析每个 GC 的时候再详细分析这些不同 GC 的动态伸缩策略。我们这里仅涉及大多数 GC 通用的堆大小伸缩涉及的参数:MinHeapFreeRatio 与 MaxHeapFreeRatio:
干货满满张哈希
2023/05/01
8100
全网最硬核 JVM 内存解析 - 6.其他 Java 堆内存相关的特殊机制
每日一面 - JVM 类型字压缩指针与 JVM 最大内存有何关系?
压缩指针这个属性默认是打开的,可以通过-XX:-UseCompressedOops关闭。
干货满满张哈希
2021/04/12
3880
每日一面 - JVM 类型字压缩指针与 JVM 最大内存有何关系?
全网最硬核 JVM 内存解析 - 10.元空间分配与回收流程举例
我们前面介绍了元空间的组成元素,但是没有将他们完整的串联起来,我们这里举一个简单的例子,将之前的所有元素串联起来。
干货满满张哈希
2023/05/01
4050
全网最硬核 JVM 内存解析 - 10.元空间分配与回收流程举例
5. java 对象是如何创建的?new背后到底做了什么
虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 new指令对应到语言层面上讲是,new关键词、对象克隆、对象序列化等。
源码之路
2021/03/02
8220
5. java 对象是如何创建的?new背后到底做了什么
全网最硬核 JVM TLAB 分析 5. TLAB 源代码全解析
线程初始化的时候,如果 JVM 启用了 TLAB(默认是启用的, 可以通过 -XX:-UseTLAB 关闭),则会初始化 TLAB。
干货满满张哈希
2021/04/12
5610
Java 虚拟机:Java对象的内存布局
在 Java 程序中,我们拥有多种新建对象的方式。除了最为常见的 new 语句之外,我们还可以通过反射机制、Object.clone 方法、反序列化以及 Unsafe.allocateInstance 方法来新建对象。
码农架构
2021/02/18
6280
Java 虚拟机:Java对象的内存布局
为什么JVM要用到压缩指针?Java对象要求8字节的整数倍?
之前没有了解过这方面的知识,于是开始google起来,但当我翻看了不下一页的帖子,我都仍然没有搞懂,因为好多答案给我的感觉更像是: 因为堆内存超过32G,压缩指针会失效,所以堆内存超过32G时,压缩指针会失效。
苏易困
2022/03/17
9330
Elasticsearch中关于JVM和垃圾回收的介绍
ES官方建议JVM中设置的最大堆内存大小,不超过节点RAM的一半,最大不超过32GB,并且Xms和Xmx相等。我们一个个说明。
用户7634691
2021/01/05
1.8K0
Elasticsearch中关于JVM和垃圾回收的介绍
推荐阅读
相关推荐
【Java】 JVM 如何保存 Java 对象
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档