
JVM
文章平均质量分 78
Nan,气冲天.
厚积薄发
展开
-
JVM 内存溢出、泄漏问题
1 内存溢出、内存泄漏排查1.1 内存溢出内存溢出:是指程序在申请内存时,没有足够的内存空间供其使用,出现OutOfMemoryError错误。内存溢出的原因可能为:存在死循环和方法的无限递归调用。大量循环产生新对象。内存中加载的数据量过于庞大,如一次从数据库取出过多数据。集合类中有对对象的引用,使用完后未清空,使得JVM不能回收。(内存泄漏)可以通过Jstack工具和图形化JConsole工具查询到发生异常的具体区域。启动参数内存值设定的过小。1.2 内存泄漏内存泄漏:是指程序在原创 2021-03-15 21:52:38 · 272 阅读 · 0 评论 -
JVM 垃圾回收器
文章目录1 垃圾回收器1.1 Serial1.2 ParNew1.3 Parallel Scavenge1.4 CMS1.5 G11.6 Stop The World1 垃圾回收器垃圾回收算法是JVM内存回收过程中具体的、通用的方法,垃圾收集器是JVM内存回收过程中具体的执行者,即各种GC算法的具体实现。1.1 SerialSerial 是最基础、历史最悠久的收集器。是一个单线程工作的收集器。在进行垃圾收集时,必须暂停其他所有工作线程,直到它收集结束。1.2 ParNewParNew收集器其原创 2021-03-08 15:29:31 · 262 阅读 · 0 评论 -
JVM 垃圾回收算法
文章目录1 垃圾回收算法1.1 标记-清除算法1.2 标记-复制算法1.3 标记-整理算法1.4 分代收集算法1 垃圾回收算法1.1 标记-清除算法分为“标记” 和 “清除” 两个阶段:首先标记出所有需要回收的对象,在标记完成后,统一回收掉所有被标记的对象,也可以反过来,标记存活的对象,统一回收所有未标记的对象。标记过程就是对象是否属于垃圾的判断过程。缺点执行效率不稳定,会随着对象增长而降低。会产生内存碎片化问题。1.2 标记-复制算法将可用内存按容量划分为大小相等的两块,每次只使用原创 2021-03-08 15:26:42 · 206 阅读 · 0 评论 -
JVM 对象存活分析
文章目录1 对象存活分析1.1 引用计数法1.2 可达性分析算法1 对象存活分析1.1 引用计数法在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能在使用的,可以,就可以被回收。弊端:很难解决对象之间相互循环引用的问题。public class ReferenceCountingGc { public Object ojb = null; public static void main(Strin原创 2021-03-08 15:23:48 · 162 阅读 · 0 评论 -
JVM 内存结构
文章目录1 JVM内存结构1.1 程序计数器1.2 Java虚拟机栈1.3 本地方法栈1.4 堆1.5 方法区1 JVM内存结构JDK1.6、JDK1.7、JDK1.8 内存模型演变1.1 程序计数器较小的内存空间、线程私有、记录当前线程所执行的字节码行号。如果执行Java方法,计数器记录虚拟机字节码当前指令的地址,本地(Native)方法则为空。唯一一个不会出现OutOfMemoryError的内存区域。作用:指向下一条要执行的字节码指令地址。1.2 Java虚拟机栈线程私有的原创 2021-03-06 17:32:53 · 222 阅读 · 0 评论 -
JVM 类加载机制
文章目录1. 类加载机制1.1 类的生命周期1.2 类加载器1.3 双亲委派机制1. 类加载机制Java 虚拟机把描述类的数据从Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java 类型,这个过程被称为虚拟机的类加载机制。1.1 类的生命周期类的生命周期分为,加载、连接、初始化、使用和卸载这四个阶段,在连接中又包括:验证、准备、解析。其中加载、验证、准备、初始化、卸载这5个阶段顺序是确定的,类的加载过程必须按照这种顺序进行开始,而解析阶段则不一原创 2021-03-05 14:28:16 · 163 阅读 · 0 评论