堆内存分配:
- 新生代-1/3
- Eden区 8/10
- From Survivor 1/10
- To Survivor 1/10
- 老年代-2/3
为什么有 From和To,2块区域? 因为新生代的垃圾回收算法:标记-复制算法
把内存区域分为两块,每次使用一块,GC的时候把一块中的内容移动到另一块中,原始内存中的对象就可以被回收了
假如总heap(堆) max分配1200M,那么年轻代占用1/3就是400M,老年代占2/3就是800M。
Eden占年轻代的8/10就是320M。Survivor占年轻代的2/10就是80M,from和to各占40M。
这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。
永久代是指的方法区!!!
- 新生代:主要是用来存放新生的对象
- 老年代:存放生命周期比较长,大小较大的对象
新创建的对象都会被分配到Eden区(如果该对象占用内存非常大,则直接分配到老年代区), 当Eden区内存不够的时候就会触发MinorGC(Survivor满不会引发MinorGC,而是将对象移动到老年代