引用计数法对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1,当引用失效时,引用计数器就减1.只要A对象的引用计数器的值为0,则对象A就不可能再被使用。实现也很简单,只需要为每个对象配备一个整型的计数器即可。缺点:1.无法处理循环引用的情况2.引用计算器要求在每次引用产生和消除的时候... ...
分类:
编程语言 时间:
2017-04-04 00:53:30
阅读次数:
226
分代垃圾回收,基于的是“大部分的对象,在生成后马上就会变成垃圾”这一经验上的事实为设计出发点。此前讨论过基于引事实的另一个垃圾回收算法,引用计数出的一些优化思路。 分代的关键是: 分代垃圾回收的典型是Ungar的分代垃圾回收。 它将堆分成如下形式: 如上,分成新生代与老年代。 在新生代内,又分成了生 ...
分类:
编程语言 时间:
2017-04-02 22:01:03
阅读次数:
310
1)垃圾回收的两个关键要素: 发现无用对象。 回收无用对象的内存空间。 2)6种垃圾回收算法 引用计数法,tracing 算法,compacting算法,copying 算法,generation算法,adaptive算法。 3)detail: 引用计数法(Reference Counting Co ...
分类:
编程语言 时间:
2017-03-22 17:38:07
阅读次数:
205
许多文章会介绍F2FS,对于入门者来说能够了解个F2FS全貌,但是真正了解这个年轻的文件系统还是要看源码的。网上F2fs源码导读的文章,我到现在还是没看过,所以就用这几篇博客来介绍下f2fs,以期对f2fs有更加深入的认识,甚至对整个IO路径的认知有所启发。 下面 文件系统的包括文件系统在磁盘上的布 ...
分类:
其他好文 时间:
2017-03-22 01:10:11
阅读次数:
1477
以下配置主要针对分代垃圾回收算法而言。 堆大小设置 年轻代的设置很关键 JVM中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。在Windows Se ...
分类:
其他好文 时间:
2017-03-14 12:18:53
阅读次数:
161
可以从不同的的角度去划分垃圾回收算法: 按照基本回收策略分 引用计数(Reference Counting): 比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只用收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。 标记-清除(Mark- ...
分类:
编程语言 时间:
2017-03-14 12:02:40
阅读次数:
207
垃圾回收的瓶颈 传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限。但是他无法解决的一个问题,就是Full GC所带来的应用暂停。在一些对实时性要求很高的应用场景下,GC暂停所带来的请求堆积和请求失败是无法接受的。这类应用可能要求请求的返回时间在 ...
分类:
编程语言 时间:
2017-03-14 11:57:32
阅读次数:
228
在《垃圾回收算法之引用计数算法》这篇博客里,我们说到了引用计数算法的缺陷:会造成循环引用的问题。本篇的引用跟踪算法则客服了这种缺陷。 在引用计数算法中,对于每个引用的对象,我们有一个额外的字段专门计数这个对象被引用的次数,当次数为0时,则视为垃圾。那在引用跟踪算法中,我们如何判断这个对象是垃圾呢?答 ...
分类:
编程语言 时间:
2017-02-19 10:25:09
阅读次数:
283
JVM结构、内存分配、垃圾回收算法、垃圾收集器。 一、JVM结构 根据《java虚拟机规范》规定,JVM的基本结构一般如下图所示: 从左图可知,JVM主要包括四个部分: 1.类加载器(ClassLoader):在JVM启动时或者在类运行时将需要的class加载到JVM中。(右图表示了从java源文件 ...
分类:
其他好文 时间:
2017-02-14 11:58:14
阅读次数:
278
来源 一、为什么需要GC 应用程序对资源操作,通常简单分为以下几个步骤: 1、为对应的资源分配内存 2、初始化内存 3、使用资源 4、清理资源 5、释放内存 应用程序对资源(内存使用)管理的方式,常见的一般有如下几种: 1、手动管理:C,C++ 2、计数管理:COM 3、自动管理:.NET,Java ...
分类:
其他好文 时间:
2017-01-12 22:50:57
阅读次数:
235