java堆内存详解.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
堆的垃圾回收方式 java堆是GC垃圾回收的主要区域。 GC分为两种: Minor GC、Full GC(也叫做Major GC). Minor GC(简称GC) Minor GC是发生在新生代中的垃圾收集动作, 所采用的是复制算法。 GC一般为堆空间某个区发生了垃圾回收, 新生代(Young)几乎是所有java对象出生的地方。即java对象申请的内存以及存放都是在这个地方。java中的大部分对象通常不会长久的存活, 具有朝生夕死的特点。 当一个对象被判定为“死亡”的时候, GC就有责任来回收掉这部分对象的内存空间。 新生代是收集垃圾的频繁区域。 Java 堆内存是Java虚拟机管理的内存中最大的一块,它被所有线程共享,主要用来存放对象实例。在虚拟机启动时就会创建。Java堆的特点在于它的可扩展性,可以通过-Xmx和-Xms参数控制堆的初始容量和最大容量。如果堆内存不足以分配新的对象,且无法继续扩展,将会抛出`OutOfMemoryError`异常。 堆内存被细分为新生代(Young)和老年代(Old),新生代进一步划分为Eden区、From Survivor区和To Survivor区。默认比例是Eden:From:To=8:1:1,可以通过`-XX:SurvivorRatio`调整这个比例。每次垃圾收集时,只使用Eden和一块Survivor区,确保总有一块Survivor区为空闲状态,这样新生代的实际可用内存空间是90%。 垃圾收集在Java堆中主要分为Minor GC和Full GC。Minor GC主要针对新生代,采用复制算法,由于大部分对象生命周期短,新生代成为垃圾收集的频繁区域。当对象在Eden和一个Survivor区(例如from区)出生后,经过一次Minor GC,存活下来的对象会被复制到另一个Survivor区(假设是to区),同时清理Eden和原来的Survivor区。每次熬过Minor GC,对象的年龄加1,当达到一定阈值(默认15,可配置`-XX:MaxTenuringThreshold`)后,对象晋升至老年代。大对象可能直接进入老年代。 Full GC则涉及到整个堆空间和持久代,通常使用标记-清除算法,处理老年代的垃圾。由于老年代对象存活率高,Full GC的频率远低于Minor GC,但其执行时间较长,可能会造成应用暂停。标记-清除算法可能导致内存碎片,影响大对象的内存分配,若无法找到连续的内存空间,也可能提前触发GC。 Java堆内存的管理和垃圾收集是Java性能优化的重要方面。理解堆内存的结构和垃圾回收机制,可以帮助我们更好地理解和解决应用程序中的内存问题,提升系统性能。通过调整JVM参数,比如新生代和老年代的比例,以及垃圾收集的策略,可以优化应用程序的内存使用和垃圾收集效率。
剩余9页未读,继续阅读
- 粉丝: 254
- 资源: 1940
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- AllSort(直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序)
- 模拟qsort,改造冒泡排序使其能排序任意数据类型,即日常练习
- 数组经典习题之顺序排序和二分查找和冒泡排序
- 基于 Oops Framework 提供的游戏项目开发模板,项目中提供了最新版本 Cocos Creator 3.x 插件与游戏资源初始化通用逻辑
- live-ai这是一个深度学习的资料
- FeiQ.rar 局域网内通信服务软件
- 172.16.100.195
- 光储并网simulink仿真模型,直流微电网 光伏系统采用扰动观察法是实现mppt控制,储能可由单独蓄电池构成,也可由蓄电池和超级电容构成的混合储能系统,并采用lpf进行功率分配 并网采用pq控制
- python编写微信读取smart200plc的数据发送给微信联系人
- 光储并网VSG系统Matlab simulink仿真模型,附参考文献 系统前级直流部分包括光伏阵列、变器、储能系统和双向dcdc变器,后级交流子系统包括逆变器LC滤波器,交流负载 光储并网VSG系