二、jvm内存泄漏 1.堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证GC Roots到对象之间有可达路径来避免垃圾收集回收机制清除这些对象,当这些对象所占空间超过最大堆容量时,就会产生OutOfMemoryError的异常。 新产生的对象最初分配在新生代,新生代满后会进行一次Min ...
分类:
其他好文 时间:
2020-07-10 18:35:00
阅读次数:
68
JVM面试题一.Java类加载过程?Java类加载需要经历一下7个过程:1.加载加载是类加载的第一个过程,在这个阶段,将完成一下三件事情:?通过一个类的全限定名获取该类的二进制流。?将该二进制流中的静态存储结构转化为方法去运行时数据结构。?在内存中生成该类的Class对象,作为该类的数据访问入口。2.验证验证的目的是为了确保Class文件的字节流中的信息不回危害到虚拟机.在该阶段主要完成以下四钟验
分类:
其他好文 时间:
2020-07-09 09:20:09
阅读次数:
89
垃圾收集前的判断 1:判断对象“死活” 引用计数算法:定义略,主流的Java虚拟机并没有选用引用计数算法来管理内存,因为此算法很难解决对象之间的相互循环引用的问题 可达性分析算法:定义略,可作为GC Roots的对象包括: 1:虚拟机栈(栈帧中的本地变量表)中引用的对象 2: 方法区中静态类属性引用 ...
分类:
其他好文 时间:
2020-07-06 12:43:22
阅读次数:
67
垃圾收集器 Serial收集器 ? 这个收集器是一个单线程工作的收集器,“单线程”不仅仅是说它只会使用一个处理器或一条收集线程去完成垃圾收集工作,更重要的是强调在它进行垃圾收集时,必须暂停其他所有工作线程,直到它收集结束。迄今为止,它依然是HotSpot虚拟机运行在客户端模式下的默认新生代收集器, ...
分类:
其他好文 时间:
2020-07-04 17:04:52
阅读次数:
48
垃圾回收的作用区域在Java堆和方法区。 如何确定对象已死(如何确定垃圾) 1.引用计数算法:在对象中添加一个引用计数器,每当有一个地方引用它,计数器值就加1;当引用失效,计数器值就减1; 任何时刻计数器为零的对象就是不可能再被使用的。 优缺点:这个看似简单的算法有很多例外情况要考虑,必须要配合大量 ...
分类:
编程语言 时间:
2020-07-03 23:40:55
阅读次数:
73
CAS:Compare and Swap,即比较再交换。 在对compareAndSwapObject追源码的过程中,出现 "Source not found"的情况,查了一下,原来是该方法并非由JAVA书写开发,而是引入的其他语言。 jdk5增加了并发包java.util.concurrent.* ...
分类:
其他好文 时间:
2020-07-03 17:56:15
阅读次数:
97
3. 回收器 3.1 Serial回收器:串行回收 3.1.1 概述 Serial收集器是最基本、历史最悠久的垃圾收集器了。JDK1.3之前回收新生代唯一的选择。 Serial收集器作为Hotspot中Client模式下的默认新生代垃圾收集器。 Serial收集器采用复制算法、串行回收和"stop- ...
分类:
其他好文 时间:
2020-07-02 21:38:41
阅读次数:
63
针对新生代的GC复制算法和老年代的GC标记-整理算法,jvm针对新生代和老年代分别提供了不同的垃圾收集器 新生代: Serial,ParNew, ParallelScavenge 老年代:CMS,SerialOld(MSC),ParallelOld 从新生代介绍起: 1.Serial 垃圾收集器(单 ...
分类:
其他好文 时间:
2020-07-01 23:52:59
阅读次数:
79
《深入理解java虚拟机 第二版 JVM高级特性与最佳实践》里面提到 CMS 垃圾收集器。 CMS 垃圾收集器的垃圾回收分4个步骤: 初始标记(initial mark) 有 STW 并发标记(concurrent mark) 没有 STW 重新标记(remark) 有 STW 并发清除(concu ...
分类:
其他好文 时间:
2020-07-01 12:47:01
阅读次数:
104
垃圾收集器与内存分配策略 概述 程序计数器,虚拟机栈,本地方法栈随线程创建而产生,随线程销毁而消失,内存的分配和回收具有确定性,一般不考虑回收问题. 对象存活性判断 引用计数算法(Reference Counting) 特点: 在对象中添加一个引用计数器. 当有一个引用时,计数器加一;当一个引用失效 ...
分类:
编程语言 时间:
2020-07-01 09:45:16
阅读次数:
54