jvm的新生代、老年代

首先,jvm虚拟机分为,本地方法栈,程序计数器,方法区,虚拟机栈。其中堆是由

jvm的新生代、老年代_第1张图片

新生代,老年代,永久代组成的。

新生代:Eden区、survivorFrom区、survivorTo区的比例是8:1:1。当有新的对象时,想进入Eden区,如果对象特别大,直接进入老年代。当Eden区内存不够的时候,会触发一次MinorGC,这次GC扫描了Eden区和survivorFrom区,同时所有的对象年龄都加一。进入survivorTo区。GC过后,survivorTo和survivorFrom互换,survivorFrom变保留了一次GC过后的对象。等待下次GC的时候和Eden区一起被扫描。如果内存中的对象一直被调用,将不会被清除回收,对象的年龄就会随着一次次的GC增加,直到增加到15岁,进入老年代,这个15岁是可以设置的。新生代的对象GC采用复制算法。

老年代:主要放生命周期长的对象。老年代的对象回收是MajorGC,当空间不够时才会触发,老年代采用标记-清除算法。

 

你可能感兴趣的:(java,后端)