一、什么是: GC算法是 方法论,那么垃圾收集器就是具体的 实现。 二、结构: JDK 1.7 update 14 HotSpot虚拟机垃圾收集器; tenured generation(老年代); 连线的收集器表示可搭配使用。 ...
分类:
编程语言 时间:
2017-06-18 13:12:32
阅读次数:
131
为什么要了解GC 我们都知道Java开发者在开发过程中是不需要关心对象的回收的,因为Java虚拟机的原因,它会自动回收那些失效的垃圾对象。那我们为什么还要去了解GC和内存分配呢? 答案很简单:当我们需要排查各种内存溢出、内存泄漏时,当垃圾收集器成为系统达到更高并发量的瓶颈时,我们就需要对这些"自动化 ...
分类:
编程语言 时间:
2017-06-15 20:39:44
阅读次数:
263
(1)概述: 最基本、发展历史最悠久的收集器。是一个单线程的收集器,在进行垃圾收集时,必须暂停其他所有的工作线程(Stop The World),直到它收集结束。 (2)优点:简单而高效 2、ParNew收集器 (1)概述:Serial收集器的多线程版本,使用多线程进行垃圾收集。除多线程收集之外,其 ...
分类:
其他好文 时间:
2017-06-10 20:21:05
阅读次数:
154
java内存区域与内存溢出异常 一、运行时数据区域 1.程序计数器:线程私有,用于存储当前所执行的指令位置 2.Java虚拟机栈:线程私有,描叙Java方法执行模型;执行方法时都会创建一个栈帧,存储局部变量,基本类型变量,引用等信息 3.Java本地方法栈:线程私有,为虚拟机使用到的Native方法 ...
分类:
编程语言 时间:
2017-06-08 22:27:50
阅读次数:
223
线程私有的内存区域随用户线程的结束而回收,内存分配编译期已确定,内存分配和回收具有确定性。共享线程随虚拟机的启动、结束而建立和销毁,在运行期进行动态分配。垃圾收集器主要对共享内存区域(堆和方法区)进行垃圾收集回收。 Java如何实现内存动态分配和内存垃圾的回收? 1、哪些内存需要回收(垃圾收集器内存... ...
分类:
编程语言 时间:
2017-06-05 00:38:49
阅读次数:
193
1、前言 最近工作需要测试nginx反向代理的性能,于是找了一些http测试工具,例如经典的Apache的ab、siege、wrk。wrk使用多线程事件驱动方式,支持lua脚本扩展。关于wrk介绍可以参考:https://github.com/wg/wrk。测试http的性能,主要关注的是QPS(每 ...
分类:
Web程序 时间:
2017-06-03 19:16:39
阅读次数:
328
GC的问题,主要分为:1、哪些内存需要回收?2、什么时候回收?3、如何回收?这里主要讲第一个问题。 1、哪些内存需要回收? 垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还“存活”,哪些已经“死去”(即不可能再被任何途径使用的对象)。 (1)引用计数算法:给对象中添加一个引用计数器 ...
分类:
其他好文 时间:
2017-06-02 13:37:33
阅读次数:
166
本文讲述的是HotSpot虚拟机中的垃圾收集器。下图展示了7种不同分代的收集器,如果两个收集器之间存在连线,就说明它们可以搭配使用。 Serial收集器 单线程,只会使用一个CPU或者一条收集线程去完成垃圾收集工作。 进行垃圾收集时,必须暂停其他的所有线程,直到它收集结束。 Client模式下默认的 ...
分类:
其他好文 时间:
2017-05-30 20:56:23
阅读次数:
181
并行垃圾收集器 串行垃圾收集器 并发标记清除(CMS)垃圾收集器 Garbage First(G1)垃圾收集器 没有深入的学习G1的原理,只是看了大概的思想; SA工具:待学习 ...
分类:
编程语言 时间:
2017-05-29 21:39:48
阅读次数:
196
一、回顾JVM内存分配 需要了解更多内存模式与内存分配的,请看 深入JVM系列(一)之内存模型与内存分配 1.1、内存分配: 1、对象优先在EDEN分配2、大对象直接进入老年代 3、长期存活的对象将进入老年代 4、适龄对象也可能进入老年代:动态对象年龄判断 动态对象年龄判断: 虚拟机并不总是要求对象 ...
分类:
其他好文 时间:
2017-05-26 00:48:51
阅读次数:
220