JVM
文章平均质量分 84
1*null
喜欢可爱的女孩子,喜欢学习,喜欢敲代码
展开
-
JVM内存模型
Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。(根据Java虚拟机规范JavaSE7版)。Java虚拟机所管理的内存将会包括以下几个运行时数据区域:1. 线程私有数据区1.1 程序计数器(Program...原创 2018-03-16 17:23:24 · 277 阅读 · 0 评论 -
JVM-对象已经死了吗?
在堆里面存放着java世界中几乎所有的对象实例,垃圾收集器在堆进行回收之前,第一件事就是要确定这些对象之中哪些还“存活”着,哪些已经“死去”(既不可能再被任何途径使用的对象)。1. 引用计数法算法该算法基本思想:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时候计数器值为0的对象就是不可能再被使用的。引用计数算法实现简单,判定效率...原创 2018-03-16 20:58:59 · 224 阅读 · 0 评论 -
JAVA类加载器
从java虚拟机角度看,只存在两种不同的类加载器:一种是启动类加载器(Bootstrap ClassLoader),这个类加载器使用C++语言实现,是虚拟机自身的一部分;另外一种就是就是所有其他的类加载器,这些类加载器都有java语言实现,独立于虚拟机外部,并且全部继承自抽象类java.lang.ClassLoader。— 启动类加载器(Bootstrap ClassLoader):这个类加载器负...原创 2018-03-22 17:38:42 · 109 阅读 · 0 评论 -
JVM类加载机制
虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。在java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的,为java应用程序提供了高度的灵活性。java里面天生可以动态扩展的语言特性运行动态加载和动态连接这个特点实现的。类加载的时机类从被加载到虚拟机内存中开始,到卸...原创 2018-03-21 21:35:42 · 176 阅读 · 0 评论 -
JVM垃圾收集算法
1. 标记-清除算法(Mark-Sweep)最基础的手机算法,如同它的名字一样,算法分为“标记”与“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后同一回收所有被标记的对象。说他是最基础的收集算法,是因为后续的收集算法都是基于这种思路并对其不足进行改进而得到的。它的主要缺点有两个:一个是效率问题,标记和清除两个过程的效率都不高;另一个是空间问题,标记清除之后会产生大量不连续的内存碎片...原创 2018-04-11 21:47:27 · 148 阅读 · 0 评论 -
JAVA垃圾回收器
Serial 收集器 这是一个新生代的单线程收集器,它会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是在它运行垃圾回收时,必须暂停其他所有的工作线程(Stop The World),直到它收集结束。它依然是虚拟机运行在Client模式下的默认新生代收集器。它的优点是简单而高效(与其他收集器的单线程相比)。采用算法为复制算法。ParNew收集器 ...原创 2018-04-05 22:17:48 · 1138 阅读 · 0 评论 -
JVM的内存分配和回收策略
(下面的几条规则是在Serial/Serial Old收集器下的内存分配和回收策咯)我们先解释一下Minor GC 和 Full GC有什么区别?新生代GC(Minor GC):指发生在新生代的垃圾收集动作,因为Java对象大多都具备朝生夕死的特性,所以Minor GC非常频繁,一般回收速度也比较快。老年代GC(Major GC/ Full GC):指发生在老年代的GC,出现了Major GC,经...原创 2018-04-06 15:34:35 · 232 阅读 · 0 评论