jvm
努力努力再努力@x
这个作者很懒,什么都没留下…
展开
-
jvm的双亲委派机制
当我们的类加载器收到一个请求的时候,首先会向上查找最顶层的没有父类的类加载器(启动类加载器),然后会依次向下读取class文件,如果该类加载器读取到class文件的时候,子节点不会再继续读取。...原创 2020-09-16 11:40:55 · 206 阅读 · 0 评论 -
jvm中引用类型分类
无论是通过引用计数算法判断对象的引用数量,还是通过可达性分析算法判断对象的引 用链是否可达,判定对象是否存活都与“引用”有关。在JDK 1.2之后,Java对引用的概念进行了扩充,将引用分为强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、**虚引用(Phantom Reference)**4种,这4种引用强度依次逐渐减弱...原创 2019-12-05 15:25:24 · 143 阅读 · 0 评论 -
jvm中GCRoots根节点
在判断对象存活的时候,jvm会用可达性分析算法,其实作为根节点的就只有几个,如下:方法区中的静态属性(静态属性指向一个对象)方法区的中的常量(常量指向一个对象)虚拟机中的局部变量(变量指向一个对象)本地方法栈中JNI(native修饰的方法指向的对象)...原创 2019-12-05 15:12:11 · 2788 阅读 · 0 评论 -
jvm垃圾收集器
目前还在整理中,后续发布,,,请期待原创 2019-12-04 16:47:50 · 63 阅读 · 0 评论 -
jvm垃圾回收算法
面试的时候有个问题很容易被问到,就是垃圾回收算法有哪几个,并且讲一下各自的原理,其实就只有4个,很简单,话不多说,直接开始:1.标记清除算法2. 复制算法3. 标记压缩算法4. 分代算法标记清除算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有 被标记的对象,它的标记过程其实在前一节讲述对象标记判定时已经介绍过了。之所以说它 是最基础的收集...原创 2019-12-04 16:43:29 · 78 阅读 · 0 评论 -
jvm判断对象存活
我们在编码的过程当中,堆的空间的利用率是有限制的,假设我们的堆空间已经快要触发GC,那么大家有没有想过,GC进行回收的时候,到底哪一类的对象才能被回收,回收的标准是那些,好的,废话不多,直接开始:引用计数法;可达性分析算法(根搜索法GS_Roots算法);引用计数法的图例如下:给对象中添加一个引用计数器,每当有 一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计...原创 2019-12-04 10:51:21 · 91 阅读 · 0 评论 -
jvm中对象的访问定位
在代码中new了一个对象,然后jvm给对象也分配好了内存,但是对象是在jvm中是如何被访问到的,大家有没有考虑过这个问题,底层到底是咋样运行的??这个地方其实《深入理解java虚拟机》中第二章2.3.3介绍的很清楚,我先摘抄一段:建立对象是为了使用对象,我们的Java程序需要通过栈上的reference数据来操作堆上的 具体对象。由于reference类型在Java虚拟机规范中只规定了一个指向...原创 2019-12-03 19:11:29 · 152 阅读 · 0 评论 -
java对象的内存布局
实际编写java代码的时候,我们需要对象,就用一个关键字new就可以实现了,大家就可以开心的去使用我们的对象了,但是如果要让工资更高一点,这样肯定是不行的,我们必须知道一个对象在jvm的堆内存里面到底包含了那些东西。话不多说,直接开始:这个就是在jvm的堆内存中,对象的内容。...原创 2019-12-03 18:29:40 · 104 阅读 · 0 评论 -
jvm的栈上分配
这里有个问题,大家根据之前的经验,new出来的对象都是存放在堆里面,但是new出来的对象可以存放到别的地方吗?答案是肯定的,new出来的对象不仅可以放到堆里,jdk1.6.25之后,jdk提供了栈上分配,就是说new出来的对象也可以存放到栈上。但是这个是否存放到栈上是有前提的,我们都知道方法在执行的时候会产生一个栈帧,那么这个方法里面new了一个对象,在别的地方没哟使用,那么这个对象就会存放到...原创 2019-12-03 17:51:44 · 376 阅读 · 0 评论 -
jvm中对象的创建过程
我们在平时的开发中写java代码的时候,如果需要一个对象,利用java关键字new就可以创建好我们需要的对象。但是各位,你们知道就是这个一个简单的new,jvm里面到底经历了多少风风雨雨吗?好的,废话不多,直接开始!(文中讨论的对象限于普通Java对象,不包括数组和Class对象等)的创建虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一 个类的符号引用,并且检查这个...原创 2019-12-03 17:28:39 · 193 阅读 · 0 评论 -
jvm的内存模型分析
废话不说,直接上图,说明一切,然后我一个个的去分析。java虚拟机栈java中的每个方法在执行的时候都会产生一个栈帧,栈帧里面存放的就是局部变量表,操作数栈,动态链接,方法出去。话不多说,直接上图:一个方法从调用到执行完成,就是一个栈帧从入栈到出栈的过程。java方法区方法区在jdk1.8之后,叫做元区间,存放的地方就是物理内存了。存放的是类的信息(class信息),常量(运行时常...原创 2019-12-03 16:29:55 · 84 阅读 · 0 评论