一、垃圾收集器的分类 1、次收集器 Scavenge GC,指发生在新生代的GC,因为新生代的Java对象大多都是朝生夕死,所以Scavenge GC非常频繁,一般回收速度也比较快。当Eden空间不足以为对象分配内存时,会触发Scavenge GC。 一般情况下,当新对象生成,并且在Eden申请空间 ...
分类:
编程语言 时间:
2019-03-13 18:16:25
阅读次数:
270
1. 引用计数GC算法 每个对象都会有对应的计数器来计算对象引用,但JVM不会采用该策略,因为不能解决对象相互引用的回收。 设置VM参数,打印GC日志 部分GC日志: [GC (System.gc()) [PSYoungGen: 6758K->584K(38400K)] 6758K->592K(12 ...
分类:
其他好文 时间:
2019-03-07 12:51:55
阅读次数:
159
一个局部变量的生命周期只存在于其自身类中。如下的例子可以发现,局部变量只能存在于声明该变量的方法中。 对于实例变量,其寿命与对象的寿命相同。对象未“死”,实例变量也未“死”。 引用变量如果活着,那么对象也会活着,当对对象的引用死了,那么该对象也会从堆上被踢开,变成垃圾被垃圾收集器(GC)所回收。 有 ...
分类:
其他好文 时间:
2019-03-04 11:11:37
阅读次数:
175
垃圾收集器回收哪些虚拟机内存区域 java堆和方法区 回收什么样的内存区域 回收“已死”的对象(即不再使用的对象)占用的内存 怎么判断对象“已死” 引用计数法 做法:给对象中添加一个引用计数器,每当被引用时,计数器就加1;每当引用失效时,计数器就减1;任何时刻计数器为0的对象就是不可能再被使用的。 ...
分类:
其他好文 时间:
2019-03-01 12:16:47
阅读次数:
206
通过前面的介绍我们了解了对象创建和销毁的过程。那么JVM中垃圾收集器具体对对象回收采用的是什么算法呢?本文主要记录下JVM中垃圾收集的几种算法。 JVM的垃圾回收的算法 标记 清除算法(Mark Sweep) 标记清除算法是最基础的回收算法,该算法分为 ...
分类:
编程语言 时间:
2019-03-01 09:36:24
阅读次数:
147
十一、垃圾回收之老年代垃圾收集器 1.Serial Old收集器(标记整理算法-单线程-Client模式下) 2.Paraller Old收集器(标记整理算法-多线程-) 3.CMS收集器(标记清除算法) 4.G1收集器(新生代,老年代都可以用) ...
分类:
其他好文 时间:
2019-02-12 21:55:34
阅读次数:
228
垃圾收集器 如果说收集算法是内存回收的方法论,垃圾收集器就是内存回收的具体实现 Serial收集器 串行收集器是最古老,最稳定以及效率高的收集器,可能会产生较长的停顿,只使用一个线程去回收。新生代、老年代使用串行回收;新生代复制算法、老年代标记 压缩;垃圾收集的过程中会Stop The World( ...
分类:
其他好文 时间:
2019-02-10 12:08:35
阅读次数:
216
在.net 中类(class) 与结构(Struct)的异同。 Class 可以被实例化,属于引用类型,是分配在内存的堆上的。类是引用传递的。 Struct 属于值类型,是分配在内存的栈上的。结构体是复制传递的。 Boolean等属于结构体。 堆和栈的区别 栈是编译期间就分配好的内存空间,因此你的代 ...
分类:
Web程序 时间:
2019-02-08 21:43:40
阅读次数:
219
A NoOp Garbage Collector JDK上对这个特性的描述是: 开发一个处理内存分配但不实现任何实际内存回收机制的GC, 一旦可用堆内存用完, JVM就会退出. 如果有System.gc()调用, 实际上什么也不会发生(这种场景下和 XX:+DisableExplicitGC效果一样 ...
分类:
编程语言 时间:
2019-02-04 10:29:05
阅读次数:
379
一 引入计数 Python内部使用引用计数,来保持追踪内存中的对象,Python内部记录了对象有多少个引用,即引用计数,当对象被创建时就创建了一个引用计数,当对象不再需要时,这个对象的引用计数为0时,它被垃圾回收。 二 垃圾回收 1、当内存中有不再使用的部分时,垃圾收集器就会把他们清理掉。它会去检查 ...
分类:
编程语言 时间:
2019-02-02 19:06:14
阅读次数:
187