深入理解JVM
一个仰望天空的Man
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java类加载的过程
一、类加载过程:1.加载:将class文件导入内存加载时类加载过程的第一个阶段,在加载阶段,虚拟机需要完成以下三件事情:1、通过一个类的全限定名来获取其定义的二进制字节流。2、将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。3、在内存生成一个代表这个类的java.lang.Class对象(hotspot虚拟机Class对象存储在方法区),作为对方法区中这些数据的访问入口。加载阶段完成后,虚拟机外部的 二进制字节流就按照虚拟机所需的格式存储在方法区之中,而且在Java堆中也创建一.原创 2020-11-05 00:56:20 · 1884 阅读 · 0 评论 -
JVM是如何判断对象可回收?常见的GC算法有哪些?
一、在java中如何判断对象是否死亡?死亡意味着可以被回收1、引用计数法算法:给每一个对象添加一个引用计数器,当一个引用指向对象,计数器值加一,当一个引用失效,计数器减一,判断计数器是否为0,确定对象是否可用。问题:很难解决对象间的互相引用。2、引用不可达算法:通过可达性分析判断对象是否存活。通过 GC Roots对象作为起始点,开始向下搜索,当一个对象到GC Roots没有任何引用链相连时,则证明此对象时不可用。java语言在可作为GC Roots的对象包括以下几种:为什么?1、虚拟机栈原创 2020-11-05 00:23:29 · 1287 阅读 · 0 评论 -
Java字节码文件指令操作码助记符含义
Java二进制指令代码解析 小注:去年在看《深入解析JVM》书的时候做的一些记录,同时参考了《Java虚拟机规范》。只是对指令的一些列举,加入了一些自己的理解。可以用来查询。 Java二进制指令代码解析 Java源码在运行之前都要编译成为字节码格式(如.class文件),然后由ClassLoader将字节码载入运行。在字节码文件中,指令代码只是其中的一部转载 2018-01-08 17:17:31 · 2608 阅读 · 0 评论 -
Java虚拟机(JVM)运行时内存区域划分详解
Java虚拟机(JVM)内存区域划分详解最近一直没有怎么更新自己的博客,主要是由于老哥公司最近的一个招标项目忙得焦头烂额,心力憔悴(ಥ_ಥ),趁着项目的空档期来重构一下以前的一篇关于jvm内存区域划分的博客,仔细阅读了一下之前的博客,大量的文字叙述可能对于读者来说,看到的第一眼就不想读下去了,吸收各方面的意见,为了让初学者更好的理解,趁着这段时间还比较自由,就来重构一下这篇博客。一、j...原创 2017-04-14 11:13:49 · 8939 阅读 · 1 评论
分享