java应用开发之JVM运行时内存分析
1.JVM的运行时内存也叫JVM堆
从GC的角度可以将JVM分为新生代,老年代,永久代。其中新生代默认占1/3的堆内存空间,老年代默认占2/3内存空间,永久代占非常少的堆内存空间方式。
而新生代分为Eden,SurvivorFrom,SurvivorTo区,Eden默认占8/10新生代区域空间,SurviorFrom和SurviorTo则占1/10.
2.JVM新创建的对象
JVM新创建的对象,除了大对象外都会放在新生代中,由于JVM会频繁创建对象,所以新生代会频繁出发MinorGC进行垃圾回收。
3.新生代详解
- Java新创建的对象先放在Eden区,如是大对象则分配到老年区。
- Eden区内存空间不足时则触发GC对新生代进行一次垃圾回收
- SurviorTo保存上一次MinorGC的幸存者
- SuviorFrom将上一次MinorGC作为这一次的扫描对象
4.老年代详解
老年代则不会频繁出发MajorGC,当MinorGC过后仍然出现老年代空间不足,则会触发MajorGC进行垃圾回收。MajorGC采用的是标记清除算法。因为要扫描老年代所有对象,所以耗时较长。
5.永久代
指的是内存永久保存区域,主要存放Class和Meta(元数据)。
以上就是java应用开发之JVM运行时内存分析的详细内容,更多关于JVM运行时内存的资料请关注脚本之家其它相关文章!
相关文章
详解Spring Data JPA中Repository的接口查询方法
repository代理有两种方式从方法名中派生出特定存储查询:通过直接从方法名派生查询和通过使用一个手动定义的查询。本文将通过示例详细讲解Spring Data JPA中Repository的接口查询方法,需要的可以参考一下2022-04-04IDEA2023 Maven3.9.1+Tomcat10.1.8配置并搭建Servlet5.0的框架实现
本文主要介绍了IDEA2023 Maven3.9.1+Tomcat10.1.8配置并搭建Servlet5.0的框架实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2023-07-07java实现多线程的两种方式继承Thread类和实现Runnable接口的方法
下面小编就为大家带来一篇java实现多线程的两种方式继承Thread类和实现Runnable接口的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2016-09-09RestTemplate发送HTTP GET请求使用方法详解
这篇文章主要为大家介绍了关于RestTemplate发送HTTP GET请求的使用方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家<BR>33+多多进步2022-03-03
最新评论