JVM
清风不灭
这个作者很懒,什么都没留下…
展开
-
对GC ROOT的理解
作者:RednaxelaFX链接:https://www.zhihu.com/question/53613423/answer/135743258来源:知乎著作权归作者所有,转载请联系作者获得授权。所谓“GC roots”,或者说tracing GC的“根集合”,就是一组必须活跃的引用。例如说,这些引用可能包括:所有Java线程当前活跃的栈帧里指向GC堆里的对象的引用;换句话说,当前...转载 2020-03-23 20:33:30 · 409 阅读 · 0 评论 -
HotSpot
文章转载自:https://blog.csdn.net/sch20095100/article/details/46591757 https://blog.csdn.net/dyr_1203/article/details/83311431?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522...转载 2020-03-21 01:50:40 · 6636 阅读 · 0 评论 -
深入理解Major GC, Full GC, CMS
很多人都分不清Major GC, Full GC的概念,事实上我查了下资料,也没有查到非常精确的Major GC和Full GC的概念定义。分不清这两个概念可能就会对这个问题疑惑:Full GC会引起Minor GC吗?经过一系列的查找和对JVM表现的分析,基本可以给Full GC和Major GC下一个定义了,这篇说一说概念和理由。这篇文章Major GCs – Separating M...转载 2020-03-17 22:50:45 · 2977 阅读 · 0 评论 -
Minor GC、Major GC和Full GC之间的区别
原文链接:javacodegeeks翻译:ImportNew.com-光光头去打酱油译文链接:http://www.importnew.com/15820.html在 Plumbr 从事 GC 暂停检测相关功能的工作时,我被迫用自己的方式,通过大量文章、书籍和演讲来介绍我所做的工作。在整个过程中,经常对 Minor、Major、和 Full GC 事件的使用感到困惑。这也是我写这篇...转载 2020-03-17 21:14:02 · 993 阅读 · 0 评论 -
JVM 垃圾回收GC Roots Tracing
1.跟搜索算法:JVM中对内存进行回收时,需要判断对象是否仍在使用中,可以通过GC Roots Tracing辨别。定义:通过一系列名为”GCRoots”的对象作为起始点,从这个节点向下搜索,搜索走过的路径称为ReferenceChain,当一个对象到GCRoots没有任何ReferenceChain相连时,(图论:这个对象不可到达),则证明这个对象不可用。可以作为G...转载 2020-03-17 20:44:10 · 197 阅读 · 0 评论 -
浅谈双亲委派和破坏双亲委派
【JVM】浅谈双亲委派和破坏双亲委派目录一、前言二、双亲委派2.1、为什么需要双亲委派2.2、双亲委派的实现三、破坏双亲委派3.1、为什么需要破坏双亲委派?3.2、破坏双亲委派的实现四、总结一、前言笔者曾经阅读过周志明的《深入理解Java虚拟机》这本书,阅读完后自以为对jvm有了一定的了解,然而当真正碰到问题的时候,才发现自己读的有多粗糙,也体会到只有实...转载 2020-03-16 19:13:12 · 454 阅读 · 0 评论 -
JVM内存模型图
原创 2020-03-16 11:02:52 · 262 阅读 · 0 评论 -
类加载器深入解释及重要特性剖析
一、类加载流程图 二、从加载到类实例化的完整过程 三、类的加载类的加载的最终产品是位于内存中的Class对象(不涉及到对象)。 Class对象封装了类在方法去内的数据结构,并且向java程序员提供了访问方法区内的数据结构的接口。 两种类型的加载器 Java虚拟机自带的加载器根类加载器(启动类加载器):Bootstrap...原创 2020-01-16 22:50:13 · 187 阅读 · 0 评论 -
类加载器准备阶段和初始化阶段的重要意义
先看下面程序的执行结果 类加载器准备阶段分析(加载器会按照程序中静态变量定义的次序一次给静态变量赋值):counter1默认初值为0; singleton默认初值为null; 构造函数不属于静态内容不会再准备阶段初始化; counter2默认初值为0执行 Singleton instance = Singleton.getInstance();时,由于getInst...原创 2020-01-14 17:14:11 · 454 阅读 · 0 评论 -
jvm:接口初始化规则
接口初始化规则 当一个接口初始化时,并不要求其父类也进行初始化只有当真正使用到父接口(如使用父接口中所定义的常量)时,才会被初始化。 事实上,这个例子并不是很恰当,但结论要记住。...原创 2020-01-14 16:23:32 · 226 阅读 · 0 评论 -
java数组创建的本质
一、普通对象的创建先来看看下面程序运行后会,Myparent4的静态代码块的内容会不会输出,会输出几次。public class Test4 { public static void main(String[] args) { MyParent4 myParent4 = new MyParent4(); MyParent4 myParent41 = ...原创 2020-01-13 21:45:26 · 221 阅读 · 0 评论 -
常量的本质与反编译详解
目录一、常量的本质二、反编译三、编译期间与运行期间的常量的区别一、常量的本质常量在编译阶段会存入到调用这个方法所在的的类的常量池中。本质上,调用类并没有直接引用到定义常量的类,因此不会触发定义常量的类的初始化。注意,这里指的是,将MyParent2中定义的static final String str = "hello world"存放到Test2的常量池中,之后T...原创 2020-01-13 18:45:07 · 454 阅读 · 0 评论 -
java类加载和类加载器
目录一、简介二、类加载器的深入剖析类加载器的组成java虚拟机与程序生命周期类的连接、加载与初始化java程序对类的两种使用方式类的加载加载.class文件的方式一、简介在java代码中,类型(Class,指的是类本身,而非对象)的加载、连接和初始化过程都是在程序运行期间完成的。 加载:最常见的方式是,将已经存在的class文件(字...原创 2020-01-13 16:28:04 · 330 阅读 · 0 评论