Tag - jvm

J.A.R.V.I.S

Life is not just Live

2021

GC-经典垃圾收集器

经典垃圾收集器

Serial收集器

Serial收集器是最基础、历史最悠久的收集器. 这个收集器是一个单线程工作的收集器, 在他进行垃圾收集时, 必须暂停其他所有工作线程, 直到它收集结束.

它是HotSpot虚拟机运行在客户端模式下的默认新生代收集器, 它简单高效, 额外内存消耗最少.

9月 25 · 25 min

GC-垃圾回收算法

垃圾回收算法

从如何判定对象消亡的角度出发, 垃圾收集算法可以划分为“引用计数器垃圾收集”(Reference Counting GC)和“追踪式垃圾收集”(Tracing GC)两大类. 这两类也常被称作“直接垃圾收集“和”间接垃圾收集“. 但是引用计数式垃圾收集算法在主流Java虚拟机中均为涉及.

9月 20 · 7 min

GC-垃圾收集器

垃圾收集器

垃圾收集需要完成三件事情:

  1. 哪些地方的内存需要回收?
  2. 如何判断能否回收?
  3. 如何回收?

9月 15 · 8 min

Java OOM异常分析

Java OOM异常分析

OOM异常分析

Java堆溢出

Java堆内存的OutOfMemoryError异常是实际应用中最常见的内存溢出异常情况. 出现Java堆内存溢出时, 异常堆栈信息“java.lang.OutOfMemoryError”会跟随进一步提示“Java heap space

可能的原因有:

  1. 内存泄漏

  2. 内存溢出

    需要从代码上检查是否存在某些对象生命周期过长、持有状态时间过长、存储结构设计不合理的情况, 尽量减少程序运行期的内存消耗

要处理这个内存区域的异常, 常规的处理方法是通过内存映像分析工具对Dump出来的堆转储快照进行分析.

9月 10 · 1 min

JVM中Java对象的创建、内存布局、访问定位

Java对象创建

当Java虚拟机遇到一条字节码new指令时, 首先将去检查这个指令的参数能否在常量池中定位到一个类的符号引用, 并且检查这个符号引用代表的类是否被加载, 解析和初始化. 如果没有则会先执行相应的类加载过程.

对象的创建过程大致分为以下四步:

  1. 为新生对象分配内存
  2. 虚拟机将分配到的内存空间(不包括对象头)都初始化为零值
  3. 对对象进行必要的设置, 例如这个对象是哪个类的实例, 如果找到这个类的元数据信息, 对象的GC分代年龄等, 这些信息存放在对象的对象头之上
  4. 执行Class文件额init方法

9月 01 · 7 min

JVM运行时数据区域

JVM运行时数据区域

Java虚拟机所管理的内存包括以下几个运行时数据区域:

8月 28 · 6 min

0 %