
JVM
January丶
个人博客:https://zysite.top
爱发电:https://ifdian.net/a/zysite
说明:文章优先更新在个人博客站点。
展开
-
JVM类加载机制
JVM类加载机制 JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化。 1. 加载 加载是类加载过程中的一个阶段, 这个阶段会在内存中生成一个代表这个类的 java.lang.Class 对象, 作为元空间这个类的各种数据的入口。注意这里不一定非得要从一个 Class 文件获取,这里既可以从 ZIP 包中读取(比如从 jar 包和 war 包中读取),也可以在运行时计算生成(动态代理),也可以由其它文件生成(比如将 JSP 文件转换成对应的 Class 类)。 2. 验证 这一阶段的主要目的是原创 2020-12-20 17:10:52 · 101 阅读 · 0 评论 -
G1垃圾收集器
G1垃圾收集器 Garbage first 垃圾收集器是目前垃圾收集器理论发展的最前沿成果,相比与 CMS 收集器, G1 收集器两个最突出的改进是: 基于标记-整理算法,不产生内存碎片。 可以非常精确控制停顿时间,在不牺牲吞吐量前提下,实现低停顿垃圾回收。 G1 收集器避免全区域垃圾收集,它把堆内存划分为大小固定的几个独立区域(Region),并且跟踪这些区域的垃圾收集进度,同时在后台维护一个优先级列表,每次根据所允许的收集时间, 优先回收垃圾最多的区域。区域划分和优先级区域回收机制,确保 G1 收集原创 2020-12-20 17:07:46 · 288 阅读 · 0 评论 -
JVM垃圾回收
Java堆(heap)构成 Java堆是线程共享的内存区域,几乎所有的对象和数组都保存在这里。也是垃圾收集器进行垃圾收集的最重要的内存区域。 由于现代JVM的GC算法采用分代收集算法,所以从GC的角度,堆可以被划分为新生代(Eden区、SurvivorFrom区、SurvivorTo区),老年代(Old)。 新生代占堆内存的1/3。老年代占2/3。 新生代中:Eden占8/10,SurvivorFrom和SurvivorTo各占1/10。 新生代 Eden区 SurvivorFrom区 Surv原创 2020-12-20 17:05:24 · 116 阅读 · 0 评论 -
Java类文件中的字节码指令
目录字节码指令使用javap工具 注意:本章内容紧接上篇文章 通过HelloWorld读懂Java类(.class)文件结构 字节码指令 通过读取HelloWorld.class文件的内容,我们得知方法信息部分包含字节码指令。 如:<init>方法部分的字节码指令为2A B7 00 01 B1 其中: 2A代表aload_0,即加载slot 0的局部变量,即this,作为下面invokespecial的参数 B7代表invokespecial,即预备调用构造方法 00 01代表常量池中的第一项原创 2020-12-20 16:59:25 · 393 阅读 · 1 评论 -
通过HelloWorld读懂Java类(.class)文件结构
目录Hello World类文件结构魔数版本常量池访问标识和继承信息成员变量方法信息附加属性 Hello World 一个最简单的Hello World程序源代码如下: package top.zysite; public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } } 通过javac -parameters -d . He原创 2020-12-20 16:57:21 · 698 阅读 · 2 评论