
JVM
文章平均质量分 79
我是谁,该干嘛
这个作者很懒,什么都没留下…
展开
-
JVM 垃圾回收器
对象通常在Eden区诞生,如果经理过一次Yong GC之后,并且能被 Survivor 区容纳的话,该对象就会被移到Survivor 空间中,并将其年龄设置为 1 岁,对象在Survivor 区每存活一次其年龄增加一岁,当前年龄增加到一定程度(默认为15)就会进入老年代。大对象需要大量来连续内存空间的Java对象,在分配空间时,它容易导致内存明明还有不少空间时就提前触发垃圾收集,以获取足够的连续空间才能安置它们,且当复制对象时,大对象就意味着高额的内存复制开销。当一个对象它不可达的时候它是非死不可吗?原创 2023-02-21 21:40:23 · 170 阅读 · 0 评论 -
JVM 堆的内存划分
JVM 堆内存的划分老年代对象会优先分配到新生代内存中,每次GC后没有回收的对象年龄加1,年龄到15还没被回收对象就会被放到老年代中。如果对象较大,超过新生代的一半也会被放到老年代。老年代区域的垃圾回收称为OldGC,OldGC非常浪费性能(老年代不像新生代这样划分区域,故会存在空间碎片),所以我们要尽量减少OldGC。OldGC往往伴随YongGC。Yong GC + Old GC = Full GC新生代新生代分为Eden区和两个Survivor区,且始终有一个Survivor区保持闲置。对象会原创 2022-04-21 22:48:59 · 765 阅读 · 0 评论 -
Java类加载的过程
Java 类加载过程包括加载,链接、初始化三个阶段。1、加载获取类的全限定类名,把class文件转为二进制流将二进制信息存入方法区中将java.lang.Class对象存入堆中(Java 中的每一个类都会创建一个类对象)简而言之就是将 Java 类的字节码文件加载到机器内存中,并在内存中构建出 Java 类的原型——类模板对象。所谓类模板对象,其实就是 Java 类在 JVM 内存中的一个快照,JVM 将从字节码文件中解析出的常量池、类字段、类方法等信息存储到模板中,这样 JVM 在运行期原创 2022-04-05 22:54:13 · 429 阅读 · 0 评论 -
JVM 内存区域与内存溢出异常
程序计数器程序计数器是一块较小的内存,它可以当作当前线程所执行的字节码的指示器,程序计数器是程序的控制流。程序的循环,跳转,异常,线程恢复等都由它控制。程序计数器它是线程私有的不存在OutOfMemoryError的情况,其生命周期也和线程一样。Java 虚拟机栈Java虚拟机栈也是线程私有的,它的生命周期和线程一样。其描叙的是Java方法的线程内存模型,每个方法被执行时Java虚拟机栈都会创建一个栈帧用于存储局部变量表,操作数栈,动态链接方法出口等信息,每一个方法执行完成就代表一个栈帧从Java虚.原创 2022-03-18 23:44:52 · 468 阅读 · 0 评论