Java(JVM)内存模型和垃圾回收监控与调整

理解Java的内存模型对于理解Java的垃圾回收机制是非常重要的。今天我们将深入Java虚拟机内存的不同部分,并且如何监控和实施垃圾回收调整。

Java(JVM)内存模型

Java(JVM)内存模型和垃圾回收监控与调整_第1张图片
正如在上边看到的图片一样,Java虚拟机的内存被分成不同的部分,广义上讲,Java虚拟机的堆内存被分成两个部分——年轻一代和老一代

年轻代

年轻代是新对象被创建的地方,当年轻一代满了的时候,垃圾回收执行,这个垃圾回收被称为小的GC,年轻一代被分为三部分-伊甸空间,幸存者1,幸存者2空间。
关于年轻一代的重要观点:
1、大多数新创建的对象位于伊甸园内存空间。
2、当伊甸园空间充满对象的时候,小的GC开始工作,所有的存活对象移到幸存者空间的里边其中一个去。
3、小的GC同样也检查存活对象并把他们移到其他的幸存者空间,所以在一段时间内,幸存者空间之一可能一直为空。
4、经过多次GC后依旧存活的对象移到老一代的内存空间中去,通常为年轻一代的对象设置阙值,来使其成为老的一代。

年老代

年老代内存存储的是长久存活下来的对象或者是经过多次小的GC存活下来的对象,通常情况下当年老代内存满的时候开始执行垃圾回收,年老代的垃圾回收被称为是主要的GC并且要花费更长的时间。

停止世界事件

所有的垃圾回收被称为是“停止世界”事件,因为所有的线程都会停止直到操作的完成。因为年轻代存储的是生命周期短的对象,小的GC速度很快,应用程序的性能不会被这个所影响。但是主要的GC会花费更长的时间,主要GC的时间要尽可能的小,因为这会是你的应用程序在垃圾回收过程中没有响应。如果你的系统是响应式的系统而且有很多的垃圾回收操作发生,你要注意超时事件的发生。
垃圾回收时间的长短取决于垃圾回收的策略,这就是为什么有必要监控和调整垃圾回收器来避免在高响应系统中的超时问题。

永久代

永久代包含了JVM在应用程序中描述类和方法的元数据。永久代是JVM根据子啊运行时根据应用程序用到的类产生的,永久代同样包含JavaSE库类中的类和方法。

发现还是掌握不够,再学习之后,继续翻译完成……
原文链接:http://www.journaldev.com/2856/java-jvm-memory-model-and-garbage-collection-monitoring-tuning
其他好的资料:
http://blog.csdn.net/renfufei/article/details/41897113

你可能感兴趣的:(Java(JVM)内存模型和垃圾回收监控与调整)