thinkphp做网站快吗,腾讯服务器,深圳福田建设局网站首页,鞍山玉佛苑官网JVM内存结构
根据Java虚拟机规范#xff0c;JVM内存主要划分为以下区域#xff1a; 年轻代#xff08;New Generation#xff09; 包括Eden空间#xff0c;用于存放新创建的对象。Survivor区由两个相同大小的Survivor1和Survivor2组成#xff0c;用于存放经过初次垃圾回…JVM内存结构
根据Java虚拟机规范JVM内存主要划分为以下区域 年轻代New Generation 包括Eden空间用于存放新创建的对象。Survivor区由两个相同大小的Survivor1和Survivor2组成用于存放经过初次垃圾回收后仍然存活的对象通过“ survivor-to-survivor ”的过程提升对象年龄最终符合条件的对象会被移到年老代。 年老代Tenured Generation 存放从年轻代中经历多次垃圾回收仍然存活的对象。 永久代/元数据区Permanent Generation/Metaspace 在Java 8及以后版本中永久代被元数据区取代用于存储类、方法等元数据信息。可通过 -XX:MetaspaceSize 和 -XX:MaxMetaspaceSize 参数调整其大小。在早期版本中永久代大小推荐初始设置为128M并预留30%的增长空间。
垃圾收集算法
JVM的垃圾回收基于“标记-清除”或其衍生算法具体包括
Serial算法单线程回收适用于单CPU环境执行时会暂停所有用户线程。Parallel算法并行回收多线程并行回收适用于多CPU环境回收时暂停用户线程但多个线程并行工作加速回收过程。Concurrent算法并发回收多线程回收与应用程序并发执行减少暂停时间适用于对响应时间敏感的应用。
垃圾回收触发条件
当年轻代空间特别是Eden区填满时触发Minor GC只清理年轻代。当年老代或元数据区满时触发Full GC同时回收年轻代和年老代或进行元数据区的清理。
OutOfMemoryError异常
JVM在以下情况可能抛出OutOfMemoryError异常
年轻代、年老代或元数据区空间耗尽且无法通过回收获得足够的空间。即使JVM并未完全耗尽内存但在连续几次GC后回收的内存比例小于2%且JVM花费超过98%的时间在GC上表明内存已极度碎片化无法有效利用。
此机制设计旨在允许程序在崩溃前有机会执行最后的操作例如输出堆转储Heap Dump便于后续分析故障原因。