
java虚拟机笔记
文章平均质量分 75
JarvisHuang
亦步亦趋的走,既要前行,也要欣赏沿途风景。
展开
-
5、HotSpot的算法实现
前面了解关于对象的生死判定和垃圾收集算法,而在HotSpot中是怎么实现的呢?枚举根结点根据可达性分析算法,GC的时候从GC Roots节点开始找引用链的,而做为GC Roots的节点主要是在全局性引用与执行上下文中,如果逐个检查的话,必然是需要耗费很多时间的。而执行GC的时候,所有线程是必然要停顿的。因为在执行时,如果对象的引用关系还在不断变化,就无法准确的进行GC了。不过,主流的虚拟机现在都是采原创 2017-05-13 10:06:33 · 442 阅读 · 0 评论 -
6、HotSpot之垃圾收集器
在HotSpot虚拟机中,有7种作用于不同分代的收集器,如下图:其中两个收集器之间存在的连线,即表示它们可以搭配使用。收集器所处区域,表示它属于新生代或者老年代收集器。Serial收集器这是最基本的收集器,是一个单线程收集器,单线程不是指它只会使用一个CPU或者一条收集线程去完成工作,而是它垃圾收集时,必须暂停所有工作线程,直到收集结束。如下图,展示的是Serial/Serial Old收集器的运行原创 2017-05-14 16:33:45 · 411 阅读 · 0 评论 -
垃圾收集器参数总结
垃圾收集器参数总结原创 2017-05-14 16:52:23 · 385 阅读 · 0 评论 -
2、JAVA堆中的对象
堆是垃圾GC的主要区域。那么堆中对象实例就有必要进行了解一下了。原创 2017-05-06 10:06:22 · 371 阅读 · 0 评论 -
1、Java虚拟机之内存区域
为什么要了解JAVA内存管理?我们知道,用JAVA进行编程,最大的优势在于内存管理。我们可以完全忽略内存管理的细节,专注于逻辑业务上。但是,并不代表它就不会出现内存溢出或泄露的问题。而且,因为JAVA有自动管理内存的机制而对这一块不了解,显然是有点low的。所以,了解一下JAVA的内存管理,既有助于提高逼格,也能让我们在进行开发的时候,可以针对内存溢出或泄露的问题进行一些优化。原创 2017-05-06 09:58:07 · 340 阅读 · 0 评论 -
3、垃圾收集之回收的对象
导读关于垃圾收集需要做的是3件事: - 哪些内存需要回收? - 什么时候回收? - 如何回收?我们已经了解到,程序计数器、虚拟机栈、本地方法栈(忘记的话,请重新看前两篇内容)这3个区域是随着线程生灭的;这几个区域的内存分配和回收是可以确定的,在方法结束或者线程结束时,内存就跟着被回收了。而JAVA堆和方法区不一样,它们只有在程序运行时才会动态的创建对象,动态的对内存进行分配和回收,而垃圾收集器原创 2017-05-07 10:34:56 · 267 阅读 · 0 评论 -
4、垃圾收集之垃圾收集算法
导读垃圾收集器回收内存是根据定义的条件来收集的,有了条件就需要算法来实现这些条件了。垃圾收集算法垃圾收集主要的算法有标记-清楚算法、复制算法、标记-整理算法、分代收集算法这四种。1、标记-清除算法从名字就可以看出这个算法比较简单,首先标记出所有要回收的对象,在标记完成后统一回收被标记的对象。它有两个不足的地方: - 效率不高,标记和清除两个过程的效率都不高; - 会产生大量不连续的内存碎片,这会原创 2017-05-08 10:46:35 · 254 阅读 · 0 评论