Serial收集器 Serial收集器是最基本、历史最悠久的收集器。这个收集器是一个单线程的收集器。它在进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。Serial收集器是新生代的收集器。采用的复制算法。 ParNew收集器 ParNew收集器其实就是Serial收集器的多线程版本,除了 ...
分类:
其他好文 时间:
2017-08-22 21:53:45
阅读次数:
134
java堆是java应用程序最密切的内存空间。差点儿全部的对象都存在堆中。java堆全然自己主动化管理,通过垃圾回收机制,垃圾对象会自己主动清理。不须要显式释放。 依据java垃圾回收机制的不同。java堆可能有不同的结构。最常见的是将整个java堆分为新生代和老年代。跟人类几乎相同了。老龄化就有可 ...
分类:
编程语言 时间:
2017-08-19 17:11:41
阅读次数:
160
Java虚拟机垃圾收集器与内存分配策略 概述 那些内存须要回收,什么时候回收。怎样回收是GC须要完毕的3件事情。 程序计数器。虚拟机栈与本地方法栈这三个区域都是线程私有的,内存的分配与回收都具有确定性,内存随着方法结束或者线程结束就回收了。 java堆与方法区在执行期才知道创建那些对象,这部分内存分 ...
分类:
编程语言 时间:
2017-08-16 11:32:06
阅读次数:
160
在查看CMS相关中文资料时,都提到了 并发预清理(Concurrent precleaning) 重新标记(STW remark) 目的是重新标记在并发标记阶段,由于对象状态的改变而标记遗漏的对象。 为什么对象状态改变,标记遗漏说的不多,基本是一句话带过,所以查找了相关资料后,记录下。 从新生代提升 ...
分类:
其他好文 时间:
2017-08-11 10:42:59
阅读次数:
203
ArrayList和LinkedList的区别 知道乐观锁,悲观锁么? 什么情况下用乐观什么情况下用悲观么 volatile关键字的作用 i++是原子性的么? 继续追问内存模型 为什么要设置工作内存和主内存 记得JVM那本书上把工作内存类比为处理器的高速缓存, 所以也就这么说了 说下GC的过程吧 刚 ...
分类:
编程语言 时间:
2017-08-08 21:48:24
阅读次数:
182
4.1.对象优先在Eden分配大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次MinorGC。新生代GC(MinorGC):指发生在新生代的垃圾收集动作,因为Java对象大多都具备朝生夕灭的特性,所以MinorGC非常频繁,一般回收速度也比较快。老年代..
分类:
其他好文 时间:
2017-08-08 19:53:58
阅读次数:
116
在Java虚拟机中,对象和数组的内存都是在堆中分配的,垃圾收集器主要回收的内存就是再堆内存中。如果在Java程序运行过程中,动态创建的对象或者数组没有及时得到回收,持续积累,最终堆内存就会被占满,导致OOM。 JVM提供了一种垃圾回收机制,简称GC机制。通过GC机制,能够在运行过程中将堆中的垃圾对象 ...
分类:
编程语言 时间:
2017-08-08 19:51:47
阅读次数:
167
最近分析HotSpotVMGC日志,就各种收集器的名称搞晕掉了,幸好参考R大(RednaxelaFX)一些回复和文章。整理在此文,以方便自已日后查阅,也可让有需要的同学少走弯路,追本溯源,一切从DefNew的来因说起。DefNew:是使用-XX:+UseSerialGC(新生代,老年代都使用串行回收收集器)P..
分类:
其他好文 时间:
2017-08-08 19:49:18
阅读次数:
129
垃圾收集器与内存分配策略(六)——内存分配与回收策略 对象的内存分配,一般来说就是在堆上的分配(但也可能经过JIT编译后被拆散为标量类型并间接地栈上分配),对象分配的细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中与内存相关的参数设置。 区分Minor GC与 Full GC: 新生代GC( ...
分类:
其他好文 时间:
2017-08-08 17:56:11
阅读次数:
154
避免FullGC: 1.通过调整堆中新生代和幸存代大小,避免因为幸存代不足而让Minor GC后的对象进入老年代。每次Minor GC都有对象进入老年代会造成数次MinorGC后FullGC. 2.减少永久区浪费,JVM进程启动完毕后,永久区变化不大了,这时可以参看Perm是否有剩余空间,节省Per ...
分类:
其他好文 时间:
2017-08-07 13:29:40
阅读次数:
130