JVM
Nicl
这个作者很懒,什么都没留下…
展开
-
深入理解java虚拟机(一)——java内存区域
运行时数据区域 java虚拟机在执行Java程序的过程中会将它所管理的内存划分为若干个不同的数据区域,这些区域都各有各的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。JVM运行时数据区如图: 1.程序计数器: 是一块比较小的内存空间,可以看做是当前线程所执行的字节码的行号...原创 2018-08-04 08:40:02 · 195 阅读 · 0 评论 -
深入理解java虚拟机(二)——判断对象是否可回收
上一篇文章简单介绍了Java内存运行时区域的各个部分。主要可以分为两部分:线程私有区域和数据共享区域。线程私有区域就不需要过多考虑内存回收问题,因为方法结束或线程结束时,内存也就随之回收了。所以内存回收是对共享区域内存的回收。首先介绍对堆内存的回收。如何判断对象“死去”?在堆中存放着Java中几乎所有的对象实例,垃圾收集器在对对象进行回收前,首先要判断对象是否存活,如何判断呢,有两种方...原创 2018-08-13 00:40:54 · 220 阅读 · 0 评论 -
深入理解java虚拟机(三)——垃圾收集算法
话不多说,直接开始。标记—清除算法:最基础的算法就是标记—清除算法了。该算法分为两个阶段:标记、清除。首先标记出需要回收的对象,在标记完成后统一回收掉所有被标记的对象。由下图可知,该算法有两个主要缺点:一个是效率问题(标记和清除效率都不高);一个是空间问题(清除后产生大量的内存碎片),这会导致程序在以后运行过程中需要分配大对象时找不到足够的连续内存而不得不提前触发另一次垃圾收集动作...原创 2018-08-14 20:08:03 · 203 阅读 · 0 评论 -
深入理解Java虚拟机(四)——JVM堆内存设置原理
堆内存设置原理JVM堆内存分为2块:Permanent Space 和 Heap Space。Permanent 即 持久代(Permanent Generation),主要存放的是Java类定义信息,与垃圾收集器要收集的Java对象关系不大。 Heap = { Old + NEW = {Eden, from, to} },Old 即 年老代(Old Generation),N...转载 2018-08-23 16:27:17 · 181 阅读 · 0 评论