深入理解Java虚拟机
文章平均质量分 90
深入Java虚拟机读书笔记。。。
在云端123
这个作者很懒,什么都没留下…
展开
-
深入Java虚拟机笔记(五):剖析HotSpot的Launcher
虽然HotSpot只是OpenJDK项目的一个功能子集,但在其中占据非常重要的地位HotSpot目录下四大子目录: agent:包含Serviceability Agent的客户端的实现 make:用于build出HotSpot的各种配置文件 src:包括HotSpot的所有源码 test:单元测试Launcher是一直用于启动JVM进程的启动器,有两种,一种windows平台下运原创 2017-05-22 22:12:08 · 2407 阅读 · 0 评论 -
深入Java虚拟机笔记(四):类加载
1.类的加载过程 JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤,如下图所示:1) 装载:查找并加载类的二进制数据;2)链接:验证:确保被加载类的正确性;准备:为类的静态变量分配内存,并将其初始化为默认值;解析:把类中的符号引用转换为直接引用;3)初始化:为类的静态变量赋予正确的初始值;&...转载 2017-05-10 21:11:31 · 768 阅读 · 0 评论 -
深入Java虚拟机笔记(三):类文件结构
介绍各种不同平台的虚拟机与所有平台都统一使用的程序存储格式——字节码是构成平台无关性的基础,实现语言的无关性还是虚拟机和字节码存储格式,所以Java编译可以把Java代码编译为存储字节码的Class文件,Java虚拟机不管Class的来源是什么,反正符合Class文件结构就可以在Java虚拟机运行。所有表都习惯性以“_info”结尾,表用于描述有层次关系的复合结构的数据,整个Class文件本质就是一原创 2017-05-10 16:24:49 · 764 阅读 · 0 评论 -
深入Java虚拟机笔记(二):垃圾收集器与内存分配策略
程序计数器、虚拟机栈、本地方法栈三个区域随线程而生而死,栈中的栈帧随方法的进入和退出执行着出栈和入栈,所以以上区域的内存分配和回收基本不用我们考虑了。而Java堆和方法区不一样,我们常说的分配和回收的内存就指这两个。判断对象是否存活的算法需要注意的是计数算法没有被用来管理内存,主要原因它没有很难解决对象之间的相互循环引用问题1、根搜索算法(GC Roots Tracing)原创 2017-05-10 17:26:37 · 868 阅读 · 0 评论 -
深入Java虚拟机笔记(一):Java内存区域与内存溢出异常
1、程序计数器为很小的内存空间,为当前线程执行的字节码的行号指示器,通过改变计数器的值来选取下一条需要执行的字节码指令,循环、分支等基础功能都是需要计数器来完成的 2、Java虚拟机栈为Java方法执行的内存模型,每个方法被执行时都会同时创建栈帧用于存储局部变量表,操作栈、动态链接、方法出口等信息,方法被执行到结束对应一个栈帧从虚拟机栈入栈出栈 两种异常情况:如果线程请求的栈深度大于虚拟机允许的原创 2017-05-02 23:56:39 · 964 阅读 · 0 评论