1.JVM的内存管理本质
JVM的内存管理就是JVM的内存分配和内存回收,内存回收在《JVM入门看着一篇就够了》https://editor.csdn.net/md/?articleId=111412340的博客中已经详细简述了,今天就只讲JVM的内存分配
2.JVM内存分配的场景
1.直接在Eden区分配:
这是对于大部分对象创建时的内存分配
2.大对象,直接分配在老年代
(1)何为大对象?
需要连续内存空间的Java对象,比如长字符串、数组。
(2)为什么这些直接到老年代
因为对象比较大,放在年青代,容易引起Monior GC
3.相同年龄占Suvivor区一半,直接进入老年代。
(1)Survivor区的一半,其实就是From区或者To区满了!
(2)默认值是15,就是年龄15时,进行移到老年代
3.JVM内存回收类型及触发时机
1.JVM的内存回收分为MinorGC 和Full GC
(1)MinorGC触发条件:
Eden区+Survior一个区(From/To区)已满
(2)影响的范围:
年青代
(3)Full GC触发条件:
老年代的连续内存空间是否大于新生代所有对象总空间
(a)//TODO
4.日常代码的启示
1.尽量避免朝生夕灭的短命大对象:否则经常触发GC