说到JVM,GC(垃圾回收)是非常重要的机制。 那么首先的问题是: GC在什么时候会发生? GC的触发包括两种情况:1.程序调用System.gc()的时候。2.系统自身决定是否需要GC。 系统进行GC的依据:1.eden区满会触发 Minor GC。 2.FULL GC的触发条件: (1)调用Sy ...
分类:
其他好文 时间:
2017-05-19 21:01:42
阅读次数:
124
GC中的垃圾,是指的是在内存中不在不再被使用的对象。 常见的垃圾回收算法 1.引用计数算法(无法回收循环引用的对象) 2.标记清除算法分为标记阶段和清除阶段(会产生内存的空间碎片) 3.复制算法(缺点是将系统内存折半,高效性是建立在存活对象少,垃圾对象多的前提下的) 在java新生代串行垃圾回收器中 ...
分类:
编程语言 时间:
2017-05-13 18:58:14
阅读次数:
133
1.标记-清除算法 概念 标记阶段:先通过根节点,标记所有从根节点开始的可达对象,因此,未被标记的对象就是未被引用的垃圾对象; 清除阶段:清除所有未被标记的对象。 缺点: 标记和清除的过程效率不高(标记和清除都需要从头便利到尾) 标记清除后会产生大量不连续的碎片。 2.复制算法 概念: 将原有的内存 ...
分类:
编程语言 时间:
2017-05-10 11:21:56
阅读次数:
206
判断对象是否存活 无用的类标准 垃圾收集算法:标记-清除算法(CMS)、复制算法(新生代)、标记整理算法 HotSpot算法 没有为所有指令都生成OopMap,程序并发所有地方都能停下来执行GC,只有到了安全点才能暂停 主动式中断:GC需要中断线程时,设置一个标志,线程执行时主动去轮询这个标志,再中 ...
分类:
其他好文 时间:
2017-04-15 14:50:30
阅读次数:
154
出处:博客园左潇龙的技术博客--http://www.cnblogs.com/zuoxiaolong,多谢分享 GC策略解决了哪些问题? 既然是要进行自动GC,那必然会有相应的策略,而这些策略解决了哪些问题呢,粗略的来说,主要有以下几点。 1、哪些对象可以被回收。 2、何时回收这些对象。 3、采用什 ...
分类:
编程语言 时间:
2017-04-05 01:15:50
阅读次数:
245
数组算法:1),复制算法: 例如:(int[] a={1,2,3,4,5,}; int[] b=new int[a.length];//b的长度由a的长度来决定; for(int i=0;i<a.length;i++){//写a.length或者写b.length都可以。长度一样; a[i]=b[i ...
分类:
编程语言 时间:
2017-01-07 01:33:26
阅读次数:
226
GC中的垃圾:特指存在于内存中、不会再使用的对象。 内存泄漏和内存溢出的区别: 内存泄漏:内存空间忘记回收,垃圾对象永远无法被回收 内存溢出:垃圾对象(不满足回收条件)所耗内存持续上升,导致内存溢出。 1 常用的垃圾回收算法 引用计数法、标记压缩法、标记清除法、复制算法和分代、分区 1)引用计数法: ...
分类:
编程语言 时间:
2016-12-19 08:42:32
阅读次数:
235
一、串行JDK1.5前的默认算法缺点是只有一个线程,执行垃圾回收时程序停止的时间比较长语法-XX:+UseSerialGC新生代、老年代使用串行回收新生代复制算法老年代标记-压缩示例图测试代码 //-Xmx20m -Xms20m -Xmn2m -XX:+UseSerialGC -XX:+PrintG... ...
分类:
编程语言 时间:
2016-11-25 12:13:04
阅读次数:
348
ps:文中的图片都来自网络。部分图片来源1. 前言作为一种高级语言,比起c和c++来,很进步的一点就是垃圾回收机制。这省去来了我们很多的工作,不过,我们仍然需要了解垃圾回收,这对我们的成长很有帮助。2...
分类:
编程语言 时间:
2016-11-19 21:20:15
阅读次数:
186