对于Java开发人员来说,了解垃圾回收机制(GC)有哪些好处呢?首先可以满足作为一名软件工程师的求知欲,其次,深入了解GC如何工作可以帮你写出更好的Java应用。 这仅仅代表我个人的意见,但我坚信一个精通GC的人...
分类:
编程语言 时间:
2014-12-09 20:02:46
阅读次数:
212
论文: A Fast Write Barrier for Generational Garbage Collectors
http://hoelzle.org/publications/write-barrier.pdf
老年代需要记录对新生代的对象引用,以便于新生代GC之后更改老年代相应位置的引用,不然就要扫描整个老年代了。这些标记称为Remembered Set。确保代际的引用位置...
分类:
编程语言 时间:
2014-12-09 17:52:02
阅读次数:
226
很多人都分不清Major GC, Full GC的概念,事实上我查了下资料,也没有查到非常精确的Major GC和Full GC的概念定义。分不清这两个概念可能就会对这个问题疑惑:Full GC会引起Minor GC吗?
经过一系列的查找和对JVM表现的分析,基本可以给Full GC和Major GC下一个定义了,这篇说一说概念和理由。
这篇文章Major GCs – Separati...
分类:
其他好文 时间:
2014-12-09 17:51:26
阅读次数:
245
如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。Java虚拟机规范中对象垃圾收集器应该如何实现并没有任何规定,因此不同的厂商,不同版本的虚拟机所提供的收集器可能会有很的差别,并且一般会提供参数供用户根据自己的应用特点和要求组合出各个年代所使用的收集器。下面是Sun HotSpot虚拟机1.6版本Update22包含的所有收集器:
上图中,如果两个收集器之间存在连线,就...
分类:
编程语言 时间:
2014-12-09 17:43:07
阅读次数:
211
原文连接:http://www.linuxidc.com/Linux/2011-02/32211.htm这些都是典型的使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤。./configure是用来检测你的安装平台的目标特征的。比如它会检测你是不是有CC或GCC,并不是需要CC或GC...
分类:
系统相关 时间:
2014-12-09 15:35:30
阅读次数:
188
当对象判定为"已死"状态,虚拟就要采取一定的手段将这些对象从内存中移除,即回收垃圾,回收过程有采用一定的算法。如下是一些主要的垃圾收集算法:
1.标记-清除算法
该算法是最基础的算法,分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。之所有说它是最基础的算法是因为后续的收集算法都是基于这种思路并对其缺点进行改进得到的。它的缺点主要有两个...
分类:
编程语言 时间:
2014-12-09 10:37:18
阅读次数:
191
在一些规模稍大的应用中,Java虚拟机(JVM)的内存设置尤为重要,想在项目中取得好的效率,GC(垃圾回收)的设置是第一步。 PermGen space:全称是Permanent Generation space.就是说是永久保存的区域,用于存放Class和Meta信息,Class在被Load的时候...
分类:
编程语言 时间:
2014-12-08 22:38:30
阅读次数:
207
上一篇总结GC的基础算法,各种GC收集器的基本原理,还是比较粗粒度的概念。这篇会整理一些GC的常见概念,理解了这些概念,相信对GC有更加深入的理解
1. 什么时候会触发Minor GC?
Eden区域满了,或者新创建的对象大小 > Eden所剩空间 CMS设置了CMSScavengeBeforeRemark参数,这样在CMS的Remark之前会先做一次Minor GC...
分类:
其他好文 时间:
2014-12-08 15:42:02
阅读次数:
236
这篇博文介绍了Linkedin信息流中间层Feed Mixer,在Feed Mixer里面用到了一个叫做SPR(念“super”)的库。博文讲的就是如何优化SPR的java代码。最终的优化结果就是SPR的内存占用减少了75%,进而将feed-mixer的内存占用减少了 50% 。这些优化减少了对象的生成,进而减少了GC得频率,整个服务的延迟就减少了25%。...
分类:
编程语言 时间:
2014-12-08 00:53:18
阅读次数:
275
什么是内存泄露?广义的Memory Leak:应用占用了内存,但是不再使用(包括不能使用)该部分内存狭义的Memory Leak:应用分配了内存,但是不能再获取该部分内存的引用(对于Java,也不能被GC)一个具体的例子:应用创建了一个长时间运行的Thread该Thread使用ClassLoader...
分类:
编程语言 时间:
2014-12-07 23:11:53
阅读次数:
221