HotSpot JVM收集器 上面有7中收集器,分为两块,上面为新生代收集器,下面是老年代收集器。如果两个收集器之间存在连线,就说明它们可以搭配使用。 Serial(串行GC)收集器 Serial收集器是一个新生代收集器,单线程执行,使用复制算法。它在进行垃圾收集时,必须暂停其他所有的工作线程(用户 ...
分类:
其他好文 时间:
2016-11-17 01:22:41
阅读次数:
183
参数描述 -XX:+UseSerialGC Jvm运行在Client模式下的默认值,打开此开关后,使用Serial + Serial Old的收集器组合进行内存回收 -XX:+UseParNewGC 打开此开关后,使用ParNew + Serial Old的收集器进行垃圾回收 -XX:+UseCon ...
分类:
其他好文 时间:
2016-11-11 14:50:54
阅读次数:
263
1、Serial收集器曾经是虚拟机新生代收集的唯一选择,是一个单线程的收集器,在进行收集垃圾时,必须stop the world,它是虚拟机运行在Client模式下的默认新生代收集器。 2、Serial Old是Serial收集器的老年代版本,同样是单线程收集器,使用标记整理算法。 3、ParNew ...
分类:
其他好文 时间:
2016-11-11 14:34:03
阅读次数:
155
1、什么是内存泄漏 当某些对象不再被应用程序所使用,但是由于仍然被引用而导致垃圾收集器不能释放(Remove,移除) 2、引起内存泄漏的原因 长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露(老年代引用新生代) 2.1 当集合里面的对象属性被修改后,由于hashcode改变当再调用rem ...
分类:
编程语言 时间:
2016-11-09 22:28:52
阅读次数:
261
在上面一篇文章中,介绍了java内存运行时区域,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程生灭;栈中的栈帧随着方法的进入和退出而有条不紊的执行着进栈出栈的操作,每一个栈帧中分配着多少内存基本上是在类结构确定下来就已知的,因此这几个区域的内存的分配和回收都具有确定性。在方法接受时内存就已经回收 ...
分类:
其他好文 时间:
2016-11-06 02:46:12
阅读次数:
200
总结:如题。 重点: 1. 注意事项有如下几点: · 大常数 我们要对可能的大常数项保持敏感。 · 非决定性的内循环 内循环是决定性因素的假设并不总是正确的。 · 指令时间 每条指令执行所需的时间总是相同的假设并不总是正确的。 · 系统因素 某种垃圾收集器或是JIT编译器或是正在从因特网中进行的下载 ...
分类:
编程语言 时间:
2016-11-05 17:56:46
阅读次数:
150
前言 在谈内存泄漏这个问题之前先看看JavaScript的垃圾收集机制,JavaScript 具有自动垃圾收集机制,就是找出那些不再继续使用的变量,然后释放其占用的内存。为此,垃圾收集器会按照固定的时间间隔(或代码执行中预定的收集时间)。常用的的方法有两种,即标记清楚和引用计数。 标记清除 Java ...
分类:
其他好文 时间:
2016-11-04 14:20:40
阅读次数:
254
一般的内存分配是指堆上的分配,但也可能经过JIT编译后被拆散为标量类型并间接地在栈上分配。对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配,少数情况下直接分配在老年代中,分配的规则并不是百分之百固定的。细节取决于哪一种垃圾收集器组合,还有虚拟机中与内存相关 ...
分类:
编程语言 时间:
2016-11-04 02:10:47
阅读次数:
218
一、问题的提出 Java的一个重要优点就是通过垃圾收集器(Garbage Collection,GC)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC或JVM的问题。其实,这种想法是不正确的,因为 ...
分类:
编程语言 时间:
2016-11-03 11:31:31
阅读次数:
312
1、对象已死? a、引用计数算法:缺点是它很难解决对象之间的相互循环引用的问题,Java语言中没有选用它。 b、根搜索算法(GC Roots Tracing):通过一系列的名为“GC Roots”的对象作为起始点,开始向下搜索,走过的路径称为引用链,当一个对象没有任何引用链相连,表面此对象不可达。在 ...
分类:
编程语言 时间:
2016-11-03 02:36:31
阅读次数:
258