JVM
tony_code_2017
开心就好
展开
-
JVM学习之二 java对象的创建
对象的创建 谈及Java,就离不开对象,因为java是面向对象的编程语言。至于什么是对象的概念,虽然已经接触java两年有余仍不能一言以蔽之,网上相关的博客甚多,大家可以前往参考。今天就具象的学习下怎么创建对象,也就是对象的创建过程。java的对象主要分为三类:普通的java对象,数组,Class对象,后两者与区别于我们普通的java对象,本文也主要学习的是第一种对象的创建,后两种后面的文章...原创 2018-06-06 23:39:01 · 136 阅读 · 0 评论 -
JVM学习笔记之四 四种引用和垃圾回收的两次标记
四种引用和两次标记四种引用 java中的数据类型我们知道是分为基本数据类型和引用类型的。基本数据类型是8种,分别是boolean byte short int long double float char,基本数据类型其变量内存中存储的是该变量的值,而引用类型在JDK 1.1中的描述是:如果Reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用。此...原创 2018-06-14 22:15:25 · 2376 阅读 · 0 评论 -
JVM学习笔记之三 垃圾回收可达性分析算法
垃圾回收中无用对象的判断为什么要垃圾回收 JVM堆内存和方法区,不像程序计数器,虚拟机栈和本地方法栈等运行时区域,随着线程的生死而分配内存和释放内存,不需要主动回收内存。堆中并且存储了绝大多数对象,占用较大的内存空间。当对象越存储越多的时候,以至于不能够为正要创建的对象提供大小合适的内存空间时,就要触发javaGC,也就是java的自动内存回收,通过该行为中系统中“无用的对象”的内存回收后再...原创 2018-06-10 17:55:30 · 2185 阅读 · 0 评论 -
JVM学习之六 垃圾收集算法
垃圾收集算法 因为JVM的内存分为不同的区域,作用也不相同,存储的元素生存周期也不同,这就决定了垃圾收集算法有着不相同的多种算法。当然,任何算法的演进都是有其历史的,现在我们看看垃圾收集算法的演进。标记-清除算法 标记清除(Mark-Sweep)算法是最基础的算法,其他算法是对该算法的改进。标记清除算法分为两个阶段,分别是标记阶段和清除阶段。 标记阶段就是之前博客(四种引...原创 2018-06-30 21:50:40 · 127 阅读 · 0 评论 -
JVM学习之五 回收方法区
回收方法区回收的必要性 Java 虚拟机规范中,可以不实现垃圾回收。方法区(HotSpot虚拟机中的永久代)进行垃圾回收时相对于堆中垃圾收回而言,“性价比”比较低。回收的对象 方法区中存储的是加载的类的信息,常量,静态变量,即时编译后的代码等数据,以回收的对象也就是这些内容。在判断非类信息是否可用的时候,也是采用可达性分析,比如常量池中的 何种场景需要回收 既然回收方法区不...原创 2018-06-26 21:59:55 · 392 阅读 · 0 评论 -
JVM学习之八 垃圾收集器
垃圾收集器 前面我们学习了关于垃圾收集的算法和为了确保垃圾收集的准确性系统提供的一些机制的概念,现在我们开始学习收集器,这个与我们开发最贴近的知识。由于JVM有各种各样的,而且java规范中对一些实现没有做强制的约束,所以不同的虚拟机实现会有不同,因此,我们以最广泛应用的HotSpot虚拟机中的收集器为学习目标进行学习。虽然现在JDK9已经早都发布,但是目前学习的书中使用的是JDK1.7中的...原创 2018-07-08 22:22:31 · 128 阅读 · 0 评论 -
JVM学习之七 HotSpot收集算法如何实现精确收集
HotSpot收集算法如何实现精确收集枚举根节点 当我们要回收内存的时候,我们需要对对象进行可达性分析,也就是从根节点搜索引用。假如引用关系在变化那么我们的分析结果就会不准确,因此我们需要在此时暂停掉所有正在执行的java线程,以确保引用关系不变化,Sun公司(当然已经被Oracle收购了)将其称为Stop The World。 当Stop The World 时,我们并不需要一...原创 2018-07-03 23:44:58 · 163 阅读 · 0 评论