网站/小程序/APP个性化定制开发,二开,改版等服务,加扣:8582-36016

这篇文章主要介绍了java应用开发之JVM运行时内存,文中附含图文示例内容分析非常简要,有需要的朋友可以借鉴参考下,希望能够有所帮助

1.JVM的运行时内存也叫JVM堆

从GC的角度可以将JVM分为新生代,老年代,永久代。其中新生代默认占1/3的堆内存空间,老年代默认占2/3内存空间,永久代占非常少的堆内存空间方式。

而新生代分为Eden,SurvivorFrom,SurvivorTo区,Eden默认占8/10新生代区域空间,SurviorFrom和SurviorTo则占1/10.

contenteditable="true" data-cke-enter-mode="2" data-cke-saved-name="_label1" data-cke-widget-data="%7B%22url%22%3Anull%2C%22text%22%3A%22%5Cn%22%2C%22desc%22%3A%22%22%2C%22icon%22%3A%22%22%2C%22isCard%22%3Afalse%2C%22hasResquest%22%3Atrue%2C%22iconDefault%22%3A%22https%3A%2F%2Fcsdnimg.cn%2Frelease%2Fblog_editor_html%2Frelease1.9.1%2Fckeditor%2Fplugins%2FCsdnLink%2Ficons%2Ficon-default.png%3Ft%3DL892%22%2C%22id%22%3A%22WIFfw8-1631766372399%22%2C%22classes%22%3Anull%7D" data-cke-widget-editable="text" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-link-icon="https://csdnimg.cn/release/blog_editor_html/release1.9.1/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=L892" data-link-title=" " data-widget="csdnlink" title=" " name="_label1">

2.JVM新创建的对象

JVM新创建的对象,除了大对象外都会放在新生代中,由于JVM会频繁创建对象,所以新生代会频繁出发MinorGC进行垃圾回收。

https%3A%2F%2Fcsdnimg.cn%2Frelease%2Fblog_editor_html%2Frelease1.9.1%2Fckeditor%2Fplugins%2FCsdnLink%2Ficons%2Ficon-default.png%3Ft%3DL892%22%2C%22id%22%3A%2261uGam-1631766372396%22%2C%22classes%22%3Anull%7D" data-cke-widget-editable="text" data-cke-widget-keep-attr="0" data-cke-widget-upcasted="1" data-link-icon="https://csdnimg.cn/release/blog_editor_html/release1.9.1/ckeditor/plugins/CsdnLink/icons/icon-default.png?t=L892" data-link-title=" " data-widget="csdnlink" title=" " name="_label2">

3.新生代详解

  • 1.Java新创建的对象先放在Eden区,如是大对象则分配到老年区。

  • 2.Eden区内存空间不足时则触发GC对新生代进行一次垃圾回收

  • 3.SurviorTo保存上一次MinorGC的幸存者

  • 4.SuviorFrom将上一次MinorGC作为这一次的扫描对象

4.老年代详解

老年代则不会频繁出发MajorGC,当MinorGC过后仍然出现老年代空间不足,则会触发MajorGC进行垃圾回收。MajorGC采用的是标记清除算法。因为要扫描老年代所有对象,所以耗时较长。

5.永久代

指的是内存永久保存区域,主要存放Class和Meta(元数据)。


评论 0

暂无评论
0
0
0
立即
投稿
发表
评论
返回
顶部