java应用开发之JVM运行时内存分析
程序员文章站
2022-04-12 22:49:44
目录1.jvm的运行时内存也叫jvm堆2.jvm新创建的对象1.jvm的运行时内存也叫jvm堆从gc的角度可以将jvm分为新生代,老年代,永久代。其中新生代默认占1/3的堆内存空间,老年代默认占2/3...
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.新生代详解
- 1.java新创建的对象先放在eden区,如是大对象则分配到老年区。
- 2.eden区内存空间不足时则触发gc对新生代进行一次垃圾回收
- 3.surviorto保存上一次minorgc的幸存者
- 4.suviorfrom将上一次minorgc作为这一次的扫描对象
4.老年代详解
老年代则不会频繁出发majorgc,当minorgc过后仍然出现老年代空间不足,则会触发majorgc进行垃圾回收。majorgc采用的是标记清除算法。因为要扫描老年代所有对象,所以耗时较长。
5.永久代
指的是内存永久保存区域,主要存放class和meta(元数据)。
以上就是java应用开发之jvm运行时内存分析的详细内容,更多关于jvm运行时内存的资料请关注其它相关文章!