作品分享
问答交流
发现
任务
客服工单
元空间和永世代的区别就在于永世代会受JVM的总空间大小的限定,而元空间受限定的是内存的总大小。
字面量:比如String范例的字符串值大概界说为final范例的常量的值。 符号引用: 1.类或接口的全限定名(包罗他的父类和所实现的接口) 2.变量或方法的名称 3.变量或方法的形貌信息 4.this
分代采取法
在内存中,分为新生代,老年代,永世代;这里的永世代也有叫方法区。新生代又分为Eden区,S0区,和S1区。一个对象创建,存储在Eden区,当Eden区满了,就会触发Minor GC,存活的对象将进入S0区,S0区满了之后会触发Minor GC,清空S0区内存,将存活的对象复制到S1区;S1满了也是GC清空到S0。倒来倒去,当次数到达16(可改)次时,会进入老年代;老年代满了会触发Full GC(会stop the world)。再满就会OOM了。
Full GC用的一般是标记整理和标记清除算法,以是不会转移,而Minor GC一般用的是标记-复制算法,以是会转移来转移去,同理,如果对象太大,会直接进老年代。
从概念上讲,类变量所利用的内存都应当在方法区中举行分配。不外有一点须要注意的是:JDK 7 之前,HotSpot 利用永世代来实现方法区的时间,实现是完全符合这种逻辑概念的。 而在 JDK 7 及之后,HotSpot 已经把本来放在永世代的字符串常量池、静态变量等移动到堆中,这个时间类变量则会随着 Class 对象一起存放在 Java 堆中。
举报
Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )
GMT+8, 2024-11-22 00:49, Processed in 0.163470 second(s), 32 queries.© 2003-2025 cbk Team.