深入理解Java虚拟机
文章平均质量分 72
从_你的全世界路过
Look up at the stars,not down at your feet。
展开
-
深入理解Java虚拟机---(4)对象是否“死亡”的判断和GC的相关收集算法
写在前面: 在总结GC之前,首先要说,Java语言的一大好处就是讲程序员从繁杂的垃圾回收,释放对象内存空间中解放出来,相比之下,C++语言,还需要通过程序员手动的去管理,释放内存空间,省去了程序员的一大部分工作。在这一篇博客中,将会总结对象的“死亡”判断和GC的相关收集算法等。GC的研究范围: 首先在前一篇博客中,我们知道了JVM的内存区域划分,很多区域是线程独享的,比如:程序计数器、...原创 2018-03-11 18:06:59 · 395 阅读 · 0 评论 -
深入理解Java虚拟机---(3)内存溢出与内存泄漏
写在前面: 内存溢出和内存泄漏都是程序中,我们要极力避免出现的异常,二者在字面上看上去相似,但实际上是不一样的异常情况,在这篇博客中,我们会总结内存溢出与内存泄漏的区别。内存溢出和内存泄漏的定义: 内存溢出:Out Of Memory,指程序在申请内存时,没有足够的内存空间供其使用。 内存泄漏:是指程序在申请内存后,无法释放已申请的内存空间。 用通俗一点的话来解释,内存溢出...原创 2018-03-11 18:00:52 · 306 阅读 · 0 评论 -
深入理解Java虚拟机---(2)JDK、JRE、JVM的联系与区别
写在前面: 程序员在自己的计算机上安装好JDK后,可以开发自己的Java程序,可能就不是那么关心JDK、JRE、JVM之间的联系,今天通过这篇博客来进行一些总结。1. JDK: JDK是指 Java Development Kit ---Java开放工具包,包括了Java运行环境JRE、Java工具和Java核心类库,在安装好JDK后,会有几个文件夹。 bin:存放Java的操作...原创 2018-03-06 09:56:58 · 984 阅读 · 0 评论 -
深入理解Java虚拟机---(5)HotSpot算法实现+GC的收集器
写在前面: 在上一篇博客中,为大家总结了GC的相关回收算法,以及怎么判断对象是否已经"死亡",在这篇博客中,将会以HotSpot虚拟机为例,讲解GC的收集器。HotSpot的算法实现: (1)GC停顿 因为GC Roots的节点主要是全局性的引用(例如常量或类静态属性),如果逐个检查引用,会消耗大量的时间。GC分析工作会让所有的线程停顿在某个时间点上。 但时间上,HotSp...原创 2018-03-19 10:22:21 · 349 阅读 · 0 评论 -
深入理解Java虚拟机---(6)触发Full GC的条件
写在前面: 前面两篇博客中介绍了GC的收集算法,和7种收集器的特点,而在这篇博客,我们会讨论什么情况下回触发一次Full GC。分代收集补充: 在了解什么情况触发一次Full GC之前,我们先看一下JVM对象在内存区域中的年代划分。首先,我们知道GC收集器会根据回收对象的年龄,进行分代收集,如:Minor GC、Major GC。 Minor GC: 新生代GC,指发生在新...原创 2018-03-22 14:39:33 · 6517 阅读 · 1 评论 -
深入理解Java虚拟机---(1)JVM五大内存区域划分
Java运行时数据区: 我们可以看到Java虚拟机在执行Java程序的时候,将Java的内存可以分为若干个区域方法区(Method Area) 、虚拟机栈(VM Stack)、本地方法栈(Native Method Stack) 、堆(Heap) 、程序计数器(Program Counter Register)。1. 程序计数器 程序计数器是当前线程所执行的字节码的行号指示器,...原创 2018-03-05 20:09:52 · 816 阅读 · 0 评论