JVM
In_life 在生活
珍惜当下。
展开
-
空间分配担保
如果大于,将尝试进行一次Minor GC,尽管这次Minor GC是有风险的;3、冒险:新生代使用复制收集算法,但为了内存利用率,只使用其中一个Survivor空间来作为轮换备份,因此当出现大量对象在Minor GC后仍然存活的情况—极端情况下,垃圾回收对象都存活。在survivor空间不足以存放所有另一survivor区和eden区的存活对象时,将放不下的那些放到老年代。2、继续检查老年代最大可用的连续空间是否大于历次晋升到老年代对象的平均大小。此时,需要老年代进行分配担保。原创 2024-04-20 15:47:25 · 288 阅读 · 0 评论 -
JVM堆栈详解
虽然JVM规范把方法区描述为堆的一个逻辑部分, 但它却有个别名non-heap(非堆)。1、每个类的信息(包括类的名称、方法信息、字段信息)类:基本信息、静态变量、常量存储在方法区中。为JVM使用到的native方法服务的。3、常量以及编译器编译后的代码等。存储方法内的参数值,局部变量。元空间(永久代)方法区的实现。原创 2024-03-31 17:21:25 · 682 阅读 · 0 评论 -
GC-垃圾回收
minor GC 分配对象时,当伊甸园区空间不足,就会触发一次minor GC ,将伊甸园区的对象放入survivor区,此时对象初始年纪为1;之后每经过一次minor GC ,+1岁,一般当到达15岁,就会晋升到老年代。与GC ROOT之间有引用链(从GC ROOT向下搜索走过的路径成为引用链)标记复制 A|B两个区域、将A中的存活对象全部复制到B区,再统一回收A区。full GC 1⃣️历次进入老年代的对象的平均大小大于老年代的剩余空间。GC ROOT :静态变量、常量池、指针。一、what(概念)原创 2024-03-13 11:19:15 · 576 阅读 · 0 评论 -
JVM内存结构
bootstrap classloader(引导类加载器)extension classloader(扩展类加载器)传递给父类 类加载器,如果父类加载器可以处理,则返回结果;私有:栈(虚拟机栈和本地方法栈)、程序计数器(PC)app classloader(应用程序类加载器)一次性将字节码文件编译为机器指令,需要一定的时间。2、四种类加载器(classloader)编译为机器指令,放入直接内存,提高执行速度。探测器探测到热点代码,JIT编译器将其。2、JIT(即时)编译器。1、加载、链接、初始化。原创 2024-03-11 18:01:27 · 390 阅读 · 0 评论