JVM
RunningHong
这个作者很懒,什么都没留下…
展开
-
JVM学习笔记1-运行时数据区域
本文摘自《深入理解Java虚拟机》第二版1 运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。 如:方法区、虚拟机栈、本地方法栈、堆、程序计数器。1.1 程序计数器(线程私有) 程序计数器可以看做当前线程所执行字节码的行号指示器。在虚拟机的概念模型中,字节码指示器就是通过改变这个计数器的值来选取下一条...原创 2018-08-28 17:06:05 · 161 阅读 · 0 评论 -
JVM学习笔记4-垃圾回收之垃圾回收算法
摘自《深入理解Java虚拟机》第二版1 垃圾回收算法1.1 标记-清除算法算法分为两个阶段,标记和清除,首先标记出所有需要回收的对象,在标记完成后统一收回所有被标记的对象。该算法主要有连个不足:第一就是标记和清除的效率都不高;第二就是空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不...原创 2018-09-04 15:00:04 · 250 阅读 · 0 评论 -
JVM学习笔记5-虚拟机类加载机制
摘自《深入理解Java虚拟机》第二版虚拟机类加载机制Java从代码到最终执行,一般需要两个过程:编译运行编译:把Java文件通过javac命令变异成字节码,也就是.class文件。运行:把编译好的.class文件交给JVM运行。这里说的类加载过程指的是JVM把.class文件中类信息加载进内存,并进行解析生成对应的class对象的过程。1 类加载过程类...原创 2018-09-07 22:00:01 · 221 阅读 · 0 评论 -
JVM学习笔记2-HotSpot对象探秘
摘自《深入理解Java虚拟机》第二版1 HotSpot虚拟机对象探秘1.1 对象的创建1.1.1 类加载检查虚拟机遇到一条new指令时,首相去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否被加载、解析和初始化过。如果没有则必须先进行相应类的类加载过程。1.1.2 新生对象分配内存(分配方法:指针碰撞、空闲列表) 在类...原创 2018-09-02 17:19:45 · 202 阅读 · 0 评论 -
JVM学习笔记3-垃圾回收之对象的死活
摘自《深入理解Java虚拟机》第二版1 对象的死活1.1 引用计数算法引用计数法算:给对象添加一个引用计数器,每当一个地方引用它是,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。但在主流的Java虚拟机中并没有选择引用计数算法来管理内存,其中最主要的原因是它很难解决对象间相互循环引用的问题,比如:在对象A和对象B中都有字段ins...原创 2018-09-03 10:55:42 · 158 阅读 · 0 评论