jvm
文章平均质量分 84
芙兰泣露
科学即信仰
展开
-
jvm(三):对象引用与垃圾回收
上一节讲到,堆里存放着java几乎所有的对象实例,而对象只有不再被使用时,才会被回收。对象引用如何判断一个对象是否还被需要呢?其实唯一的准则就是是否还有变量引用它。 比如Object o = new Object(); o = new Object();上述代码新建了两个对象实例,第一个对象毫无疑问无法再被访问了,因此第一个对象就可以被回收了。 这就是变量引用的准则,那么内部关于对象的引用是如何原创 2017-10-24 12:30:18 · 591 阅读 · 0 评论 -
jvm(四):垃圾收集器初探
对于为了学jvm的人来说,垃圾收集应该是最为有用的章节之一,了解垃圾收集有助于我们手动调节使用何种垃圾收集机制,有助于解决内存溢出。垃圾收集算法垃圾收集算法是垃圾收集器的构建理论,仅从算法的思想方面介绍三种常用的垃圾收集算法如下:标记-清除算法标记-清除(Mark-Sweep)算法,如同名字一样,分为两个阶段:即“标记”和“清除”阶段。 首先标记处需要回收的对象(使用可达性分析),标记完成后统一回原创 2017-10-30 20:19:02 · 245 阅读 · 0 评论 -
jvm(五):垃圾收集器的种类
上文对垃圾收集的算法做了一个简单的梳理,但那些只是理论算法,并不是jvm中实际的收集器。本节将对这种不同的垃圾收集器做一个简单的阐述。 总的来说,jvm将内存空间(堆)分为老年代和新生代,然后垃圾收器是针对不同年代作用的。 上图显示了jvm中目前(1.7)采用的垃圾收集器,除了G1收集器外,其他收集器都是只服务于新生代和老年代中的一个。 连线表示新生代的垃圾收集器和老年代的垃圾收集器可以协原创 2017-11-02 14:19:58 · 2795 阅读 · 1 评论 -
jvm(七):内存分配与回收
承接上一节,我们知道了垃圾收集的机制。 但现在还有一个问题,即对象是如何被分配的,以及何时需要回收。 但我们不经要问,对象不就是直接被分配在堆上的新生代嘛,当空间满了就去回收,这样总结太泛了,我们有必要了解其中的具体细节。 对象分配 大多数情况下,对象优先在新生代的Eden上分配,当Eden区没有足够空间时,jvm发动一次Minor GC。原创 2017-11-09 12:57:17 · 314 阅读 · 0 评论 -
jvm(一):内存划分
jvm,java 虚拟机,是java语言实现平台无关性的具体实现,是一个虚拟的计算机设备。 作为jvm笔记记录,从本节开始,记录jvm知识的点点滴滴。 以java se 7为标准,java虚拟机在执行java程序时把所管理的内存划分为若干不同的数据区域:原创 2017-10-14 10:11:23 · 331 阅读 · 0 评论 -
jvm(二):对象加载浅谈
通过第一节的介绍,知道了对象实际上是分配在堆空间上的。那么具体的对象分配过程是怎样的呢? 虚拟机遇到一条new 指令时,先检查该指令对应的方法(初始化方法)能否在方法区(具体来说是常量池)找到,并检查对应的类是否被加载、解析和初始化过。如果没有,那就必须先执行相应的类加载过程。类加载通过后,就可以确定对象所需的内存大小。 以上过程有一些需要注意的点:分配方式我们如何区别哪一块内存是属于哪一个类?原创 2017-10-21 17:13:37 · 282 阅读 · 0 评论