Java 内存类型分为:
Heap
Permanent
Stack
其中Heap
-Xms<size> set initial Java heap size
-Xmx<size> set maximum Java heap size
Heap分为:
a.新生代(young generation):新生代又被分为两块: Eden Space和Survivor spaces新建的大部分对象存放在Eden Space
b.旧生代(tenured generation又成old):存放新生代中经过多次垃圾回收仍然存活的对象,新建对象也
有可能存在,像大的数组对象,且成员中无引用外部对象
[Eden ['i:dn] n. 伊甸园, 乐园,tenured ['tenjuə]终身占用 ]
其中的Permanent Generation (non-heap)
保存虚拟机自己的静态(refective)数据,例如类(class)和方法(method)对象。JVM共享这些类数据。
这个区域被分割为只读的和只写的,
另外
Code Cache (non-heap)
HotSpot Java虚拟机包括一个用于编译和保存本地代码(native code)的内存,叫做“代码缓存区”(code cache)分区
OOM内存溢出:
如果JVM里运行的程序, 它的heap space和perm gen都满了,这个时候程序还企图创建新的对象实例的话,jvm gc就会启动,试图释放足够的内存来创建这个对象。这个时候如果gc无法释放出足够的内存,它就会抛出OutOfMemoryError内存溢出错误。
垃圾收集类型:
MinorGC局部垃圾收集(新生代垃圾收集)
FullGC全局垃圾收集 对新生代、旧生代及持久代都进行GC,此时JVM停止对外相应,CPU占用率变高。
FullGC原因:
1、旧生代空间不足触发Full GC
2、CMS GC失败触发的Full GC
3、统计得到的MinorGC晋升到旧生代的平均大小 大于旧生代的剩余空间
CMS:Concurrent Mark-Sweep GC(执行时间和应用并发进行),参数:-XX:+UseConcMarkSweepGC
注:CMS执行过程大部分时候是和应用并发进行,相比并行GC,CMS GC需要执行三次mark,GC总耗时较长,但执行GC的时间被缩短
分享到:
相关推荐
本系列课程从JVM基础到高级实战,老师手把手教你如何进行JVM调优,思路清晰,没有废话,旨在挑战高薪。 课程亮点: 1、基于阿里arthas进行JVM调优; 2、基于代码排查OOM问题,拒绝空讲; 3、总结JVM通用的调优思路;...
垃圾收集器是垃圾回收算法的落地实现,包括 Serial 串行垃圾收集器、Parallel 并行垃圾收集器、CMS 并发垃圾收集器、G1 垃圾收集器等。不同的垃圾收集器适用于不同的应用场景。 在 Java 中,可以通过命令行参数来...
内存分代是JVM优化的一种策略,将堆内存分为新生代(Young Generation)和老年代(Old Generation)。新生代主要用于存储新创建的对象,而老年代则保存长期存活的对象。新生代又细分为Eden区和两个Survivor区(From ...
G1是JVM的一种分代垃圾收集器,引入了Region的概念,目标是预测并控制垃圾回收停顿时间。G1不仅在年轻代和老年代之间,还在Region内部进行垃圾回收,解决了CMS的内存碎片问题。G1采用了混合GC策略,可以在一次GC...
垃圾收集算法主要包括标记-清除算法、复制算法、标记-整理算法以及分代收集算法。 1. **标记-清除算法(Mark-Sweep)** - 优点:实现简单。 - 缺点:效率较低,容易产生内存碎片。 2. **复制算法(Copying)** ...
讲一讲JVM中的分代模型 讲一讲CMS垃圾回收器 讲一讲G1垃圾回收器 JVM的运行时数据区有哪些? 什么是堆空间?堆内存包含哪些部分? 什么是内存溢出? 什么是内存泄漏?与内存溢出有什么关系? 对象包含哪些部分? ...
7. **性能优化**:垃圾回收会对程序性能产生影响,因此需要合理设置JVM参数,如新生代大小、老年代大小、 survivor比例等,以及选择合适的垃圾收集器。 8. ** finalize() 方法**:Java允许定义一个finalize()方法,...
3. 垃圾收集算法:包括标记-清除、复制、标记-整理、分代收集等。现代JVM如G1、ZGC、Shenandoah等采用混合策略,旨在减少停顿时间。 四、JVM性能优化 1. 参数调优:调整JVM启动参数,如-Xms、Xmx设定堆大小,-XX:...
- **垃圾收集器介绍**:JVM提供了多种垃圾收集器,包括Serial Collector、Parallel Collector、CMS Collector以及G1 Collector等,每种收集器都有其适用场景和特点。 - **G1垃圾收集器详解**:G1(Garbage First)是一...
Java虚拟机(JVM)是Java程序运行的基础,它的核心组成部分之一就是垃圾收集器(Garbage Collector, GC)。GC的主要任务是自动管理程序中的内存,回收不再使用的对象,避免内存泄漏,确保系统的稳定运行。HotSpot ...
- **垃圾收集算法**:包括标记-清除、复制、标记-整理、分代收集等,不同场景下选择合适的算法能提高性能。 3. **类加载机制**: - **加载**:将.class文件读入内存,并为之创建一个Class对象。 - **验证**:...
- **分代收集**:针对不同年龄段的对象使用不同的策略,如年轻代采用复制算法,老年代采用标记-整理。 4. **JVM监控工具** - **jps**:显示JVM进程状态。 - **jstat**:监控JVM的各种统计数据,如GC情况、类装载...
JVM 的垃圾回收算法有很多,如 Mark-Sweep 算法和 Concurrent Mark-Sweep 算法等。 9. JVM 的沙箱机制 JVM 的沙箱机制是一种安全机制,用于限制 Java 代码的访问权限。沙箱机制可以防止恶意代码的攻击,保护 Java ...
优化JVM主要涉及堆大小(如-Xms、-Xmx)、新生代与老年代的比例(-XX:NewRatio)、Survivor区比例(-XX:SurvivorRatio)、垃圾收集器选择(如-XX:+UseParallelGC、-XX:+UseG1GC)等。此外,还可以通过-XX:+...
Java引用,GC垃圾收集器,OOM 类加载,类加载器 对象初始化 编译 JiT:即时编译 两大无关性 平台无关性: 每一台平台解释器不同,但是虚拟机相同,跨平台的原因。 一个程序对应一个虚拟机,多个程序对应多个虚拟机...
1. 参数调优:通过调整JVM启动参数,如-Xms、-Xmx设定堆大小,-XX:+UseConcMarkSweepGC选择垃圾收集器等,来优化JVM性能。 2. 编程实践:减少对象创建,避免大量短生命周期的对象,使用StringBuilder代替String拼接...
- **堆**:存放所有类实例和数组,是Java中最大的内存区域,也是垃圾收集的主要区域。 - **方法区/元空间**:存储已加载的类信息、常量、静态变量等。 3. **Out of Memory (OOM)** 错误: 当Java应用程序请求的...
常见的垃圾收集算法有标记-清除、复制、标记-整理和分代收集等。JVM提供了多种垃圾收集器,如Serial、Parallel、CMS、G1等,选择合适的垃圾收集器对系统性能至关重要。 五、内存溢出与性能优化 内存溢出(Out of ...
介绍常用的JVM诊断和分析工具,并以死锁和OOM为例,展示这些工具的使用。 第八课 分析Java堆 MAT的使用案例 Jvisualvm介绍使用 介绍了Java堆的分析方法,以一个实例为基础,展示对堆的分析过程。 第九课 锁 ...