垃圾收集器是内存回收的具体实现,Java 虚拟机规范中对其实现没有具体规定,不同的厂商、不同版本的虚拟机提供的垃圾收集器都会有很大差别。本文主要介绍 HotSpot 虚拟机中的垃圾收集器。 各种垃圾收集器 上图展示了不同的垃圾收集器,每个收集器都作用于特定的分代。如果两个收集器直接存在连线,那么说明 ...
分类:
编程语言 时间:
2018-05-09 14:38:40
阅读次数:
153
阅读GC日志是处理Java虚拟机内存问题的基础技能,它只是一些人为确定的规则,没有太多技术含量。因此增加本节内容来讲解如何理解GC日志。 每一种收集器的日志形式都是由它们自身的实现所决定的,换而言之,每个收集器的日志格式都可以不一样。但虚拟机设计者为了方便用户阅读,将各个收集器的日志都维持一定的共性 ...
分类:
其他好文 时间:
2018-05-06 17:29:57
阅读次数:
225
HotSpot虚拟机中有7种垃圾收集器:Serial、ParNew、Parallel Scavenge、Serial Old、Parallel Old、CMS、G1。 垃圾收集器是垃圾回收算法(标记-清除算法、复制算法、标记-整理算法、分代收集)的具体实现,不同商家、不同版本的JVM所提供的垃圾收集 ...
分类:
其他好文 时间:
2018-05-06 17:04:12
阅读次数:
222
对象的创建过程: 当虚拟机遇到一条含有new的指令时,会进行一系列对象创建的操作: 1、检查常量池中是否有即将要创建的这个对象所属类的引用; (1)若常量池中有没有这个类的符号引用,说明这个类还没有被定义!抛出ClassNotFoundException; (2)若常量池中有这个类的符号引用,则进行 ...
分类:
其他好文 时间:
2018-05-03 15:21:09
阅读次数:
168
介绍 CMS垃圾回收器的全称是Concurrent Mark-Sweep Collector,从名字上可以看出两点,一个是使用的是并发收集,第二个是使用的收集算法是Mark-Sweep。从而也可以推测出该收集器的特点是低延迟并且会有浮动垃圾的问题。下面详细介绍一下这个收集器的特点。 CMS收集器 C ...
分类:
其他好文 时间:
2018-05-01 23:50:36
阅读次数:
215
介绍 JVM里面的Throughtput收集器是一款关注吞吐量的垃圾收集器。该收集器是唯一一个实现了UseAdaptiveSizePolicy策略的收集器,允许用户通过指定最大暂停时间和垃圾收集时间占总时间的百分比,然后自适应调整JVM的参数来达到配置的目标。 Throughtput收集器 先上一张 ...
分类:
其他好文 时间:
2018-04-30 20:28:52
阅读次数:
208
一、概述 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。 jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理,因 ...
分类:
其他好文 时间:
2018-04-30 18:05:08
阅读次数:
192
一、串行收集器 -XX:+UseSerialGC 从第二张图的时间可以看出来,复制算法的效率要比标记压缩算法高的多。 二、并行收集器 -XX: +UseParNewGC (新生代并行,老年代串行) -XX: +UseParallelGC (新生代并行,老年代串行) -XX: +UsePrallelO ...
分类:
其他好文 时间:
2018-04-29 20:31:50
阅读次数:
248
1、垃圾收集只跟内存有关!也就是说垃圾收集器存在的唯一原因是为了回收程序不再使用的内存。 2、finalize()是在java.lang.Object里定义的,也就是说每一个对象都有这么个方法。这个方法在gc启动,该对象被回收的时候被调用。其实gc可以回收大部分的对象(凡是new出来的对象,gc都能 ...
分类:
其他好文 时间:
2018-04-24 14:57:33
阅读次数:
141
栈和队列是数据结构中非常常见又非常基础的线性表,在某些场合栈和队列使用很多,因此本篇主要介绍栈和队列,并用Java实现基本的栈和队列,同时用两个栈实现队列和用两个队列实现栈。 栈:栈是一种基于“后进先出”策略的线性表。在插入时(入栈),最先插入的元素在栈尾,最后插入的元素在栈顶;在删除时(出栈),最 ...
分类:
编程语言 时间:
2018-04-20 23:30:55
阅读次数:
195