深入理解JVM
文章平均质量分 77
程序员云帆哥
互联网厂程序员,高级Java开发工程师。博客认证:CSDN博客专家、阿里云专家博主、华为云云享专家、腾讯云年度优秀作者。
展开
-
【深入理解JVM】模拟内存溢出及排查分析
内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存。原创 2021-11-07 14:05:43 · 1179 阅读 · 0 评论 -
【深入理解JVM】JVM常用分析工具之jmap
jmap,它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列。原创 2020-09-22 16:20:19 · 4201 阅读 · 0 评论 -
【深入理解JVM】详解GC日志参数配置及日志分析
一、首先模拟一个JVM堆内存不足的异常场景。public class GCTest { public static void main(String[] args) { List<Object> d = new ArrayList<Object>(); while(true){ d.add(new GCTest()); } }...原创 2019-07-31 02:22:24 · 4514 阅读 · 3 评论 -
【深入理解JVM】GC垃圾回收算法
1、标记-清除算法(Mark-Sweep) 标记-清除算法由标记阶段和清除阶段构成。标记即将每一个可以从根对象访问到的对象都会被添加一个标识,于是这个对象就被标识为可到达对象。。清除即将如果发现有对象没有被标识为可到达对象,那么就将此对象占用的内存回收,并且将原来标记为可到达对象的标识清除,以便进行下一次垃圾回收操作。缺点: 1、会存在大量的内存碎片,导致内存不规整,创建对象时,可能会...原创 2019-07-21 22:33:18 · 512 阅读 · 0 评论 -
【深入理解JVM】Java对象创建过程和对象内部结构
一、对象的创建过程二、对象的内部结构(内存分配)1、对象头hashcodeGC分代年龄线程编号锁编号时间戳引用计数…2、实例数据 存储所定义的各种类型字段内容,无论是从父类继承下来,还是在子类中定义的,都需要记录起来。3、对齐填充 起着占位符的作用,实例数据起始地址必须是8字节的整数倍,(对像的大小必须是8字节的整数倍)。三、对象的访问 通过栈上的refe...原创 2019-07-21 22:32:22 · 843 阅读 · 0 评论 -
【深入理解JVM】剖析JVM内存模型
JVM在执行java程序时的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。原创 2018-05-19 00:29:32 · 3964 阅读 · 0 评论 -
【深入理解JVM】GC垃圾回收面试热点
“堆”是一个“运行时”数据区,是通过new等指令建立的,Java的堆是有Java的垃圾回收机制来负责处理的。堆是动态分配内存大小,垃圾收集器可以自动回收不再使用的内存空间。所谓的内存垃圾,是指在堆上开辟的内存空间,在不用的时候就变成了“垃圾”。 Java中,这部分“垃圾”可以被Java虚拟机的一个程序发现并自动清除掉。Java语言提供了一个系统级的线程级——垃圾收集器线程,来跟踪每一块分配原创 2017-07-27 21:32:06 · 12268 阅读 · 2 评论