![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 73
NO0b
小白
展开
-
JDK1.8关于运行时常量池, 字符串常量池的要点
网上关于jdk 1.8的各种实验, 结论鱼龙混杂 , 很多都相矛盾,网上有的实验也被后人测试出了不同的结果很多都分辨不了真假, 这里记录一下网络上正确的结论, 欢迎指正!首先自行区分运行时常量池与Class文件常量池(静态常量池)的概念, JVM内存模型 ,方法区与永久代的区别, 有些在我的其他博客有介绍, 连接在文尾在JDK1.7之前运行时常量池逻辑包含字符串常量池存放在...原创 2018-11-29 22:53:13 · 28538 阅读 · 45 评论 -
JVM----重载 与 重写的本质 : 分派
本篇来自周志明的<<深入理解java虚拟机>>众所周知,Java是一门面向对象的程序语言,因为Java具备面向对象的3个基本特征:继承、封装和多态。本节讲解的分派调用过程将会揭示多态性特征的一些最基本的体现, 如“重载”和“重写”在Java虚拟机之中是如何实现的,这里的实现当然不是语法上该如何写, 我们关心的依然是虚拟机如何确定正确的目标方法。1.静态分派在开始...原创 2018-12-18 10:32:27 · 576 阅读 · 1 评论 -
Java语言是" 解释执行" 的语言吗
本篇来自周志明的<<深入理解java虚拟机>>许多Java虚拟机的执行引擎在执行Java代码的时候都有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,在本章中,我们先来探讨一下在解释执行时,虚拟机执行引擎是如何工作的。解释执行Java语言经常被人们定位为“解释执行”的语言,在Java初生的JDK 1.0时代 ,这种定义还算是比较准...原创 2018-12-22 11:50:14 · 3498 阅读 · 0 评论 -
JVM----类加载的过程
本篇来自周志明的<<深入理解java虚拟机>>上一篇介绍了类加载的时机:https://blog.csdn.net/q5706503/article/details/85012392这篇详细讲解一下 Java 虚拟机中类加载的全过程,也即是加载、验证、准备、解析和初始化这 5 个阶段所执行的具体动作加载 “加载” 是 “类加载”(Class L...原创 2018-12-15 17:11:10 · 281 阅读 · 0 评论 -
JVM----类加载的时机
本篇来自周志明的<<深入理解java虚拟机>>类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading)7个阶段。其中验证、准备、解析三个部分统称为连接(...原创 2018-12-15 11:20:35 · 1590 阅读 · 1 评论 -
JVM----G1垃圾收集器
本篇来自周志明的<<深入理解java虚拟机>>G1(Garbage-First)收集器是当今收集器技术发展的最前沿成果之一,早在JDK 1.7刚刚确立项目目标,Sun公司给出的JDK 1.7 RoadMap里面,它就被视为JDK 1.7中HotSpot虚拟机的一个重要进化特征。从JDK 6u14中开始就有Early Access版本的G1收集器供开发人员实验、试用,由此...原创 2018-12-08 23:49:35 · 201 阅读 · 0 评论 -
JVM----CMS垃圾收集器
本篇来自周志明的<<深入理解java虚拟机>>CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。目前很大一部分的Java应用都集中在互联网站或B/S系统的服务端上,这类应用尤其重视服务的响应速度,希望系统停顿时间最短,以给用户带来较好的体验。CMS收集器就非常符合这类应用的需求。从名字(包含“Mark Sweep”...原创 2018-12-08 23:31:22 · 268 阅读 · 0 评论 -
JVM----根节点的枚举, 安全点与安全区域
本篇来自周志明的<<深入理解java虚拟机>>枚举根节点 以可达性分析中从GC Roots 节点找引用链这个操作为例,可作为GC Roots 的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如栈帧中的本地变量表)中,现在的很多应用仅仅方法区就有数百兆,如果要逐个检查这里面的引用,那么必然会消耗很多时间。 另外,可达性分析对执行时间的敏感还体现...原创 2018-12-08 22:45:49 · 815 阅读 · 1 评论 -
JVM----JVM 垃圾收集算法
本篇来自周志明的<<深入理解java虚拟机>>标记-清除算法标记-清除(Mark-Sweep)算法是最基础的算法,就如它的名字一样,算法分为”标记”和”清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。之所以说它是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其缺点进行改进而得到的。它主要有两个缺点:一个是效率问题,标...原创 2018-12-08 22:29:15 · 143 阅读 · 0 评论 -
JVM----关于方法区的垃圾回收
本篇来自周志明的<<深入理解java虚拟机>>很多人认为方法区(或者HotSpot虚拟机中的永久代)是没有垃圾收集的,Java虚拟机规范中确实说过可以不要求虚拟机在方法区实现垃圾收集,而且在方法区中进行垃圾收集 的“性价比” 一般比较低:在堆中 ,尤其是在新生代中,常规应用进行一次垃圾收集一般可以回收70%〜95%的空间,而永久代的垃圾收集效率远低于此。永久代的垃圾...原创 2018-12-08 22:08:07 · 1251 阅读 · 0 评论 -
JVM----对象回收过程: 记一次对象的自我救赎
本篇来自周志明的<<深入理解java虚拟机>>预备知识: 如何判定对象存在活引用? https://blog.csdn.net/q5706503/article/details/84899581即使在可达性分析算法中不可达的对象,也并非是“非死不可”的 ,这时候它们暂时处于“缓刑” 阶段 ,要真正宣告一个对象死亡 ,至少要经历两次标记过程 : 如 果对象在进行可达性...原创 2018-12-08 22:05:01 · 354 阅读 · 0 评论 -
JAVA----四种引用: 强软弱虚
本篇来自周志明的<<深入理解java虚拟机>>无论是通过引用计数算法判断对象的引用数量,还是通过可达性分析算法判断对象的引用链是否可达,判定对象是否存活都与“引用”有关。在JDK 1.2以前,Java中的引用的定义很传统 :如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用。这种定义很纯粹,但是太过狭隘,一个对象在这种...原创 2018-12-08 21:59:17 · 210 阅读 · 0 评论 -
JVM----判断对象是否存活 : 引用计数算法OR可达性分析算法?
本篇来自周志明的<<深入理解java虚拟机>>在堆里面存放着Java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还“存活”着 ,哪些已经“死去”(即不可能再被任何途径使用的对象)。引用计数算法很多教科书判断对象是否存活的算法是这样的:给对象中添加一个引用计数器,每当有—个地方引用它时,计数器值就加1 ; 当引用失效时...原创 2018-12-08 21:54:47 · 274 阅读 · 0 评论 -
Direct Memory堆外内存
JVM可以使用的内存分外2种:堆内存和堆外内存. 堆内存完全由JVM负责分配和释放,如果程序没有缺陷代码导致内存泄露,那么就不会遇到java.lang.OutOfMemoryError这个错误。 使用堆外内存,就是为了能直接分配和释放内存,提高效率。JDK5.0之后,代码中能直接操作本地内存的方式有2种:使用未公开的Unsafe和NIO包下ByteBuffer。作为JAVA...原创 2018-11-28 19:44:00 · 6526 阅读 · 0 评论 -
JVM内存区域划分
Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。在讨论JVM内存区域划分之前,先来看一下Java程序具体执行的过程: 首先Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件,加...原创 2018-11-29 11:06:20 · 2881 阅读 · 0 评论 -
JVM 1.8 永久代---元空间 的变动
介绍JVM的内存模型的博客:https://blog.csdn.net/q5706503/article/details/84614158JDK8 HotSpot JVM 将移除永久区,使用本地内存来存储类元数据信息并称之为:元空间(Metaspace)以下是JVM内存模型中方法区的变动1.新生代:Eden+From Survivor+To Survivor2.老年代:OldG...原创 2018-11-29 19:07:25 · 10997 阅读 · 4 评论 -
可达性分析算法中,哪些可以作为 root?
java垃圾回收的可达性分析算法, 列举可以作为root的对象:由于网上的博客回答都不全, 找了份来自help.eclipse.org的, 先上原文与连接供大佬参考, 后边挂上垃圾翻译, 不接受关于翻译的质疑! (认真脸)https://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.mat.ui.help%2Fconcepts%...原创 2019-03-16 17:59:19 · 1956 阅读 · 0 评论