![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
snail_lidc
这个作者很懒,什么都没留下…
展开
-
2021-06-16
垃圾回收引用关系方法区的回收 当前主流的内存管理子系统,都是通过可达性分析算法来判定对象是否存活的。这个算法的基本思路就是通过一系列的称为“GC Roots”的根对象作为起始节点集,从这些节点开始,根据引用关系向下搜索,由此所有到“GC Roots”不可达的对象,都将被判定为可回收对象。 引用关系 这里不得不说一下java引用关系: 强引用:程序中普遍存在的引用赋值,即类似“Object o = new Object()”这种引用关系;对象只要强引用关系存着就不会被回收; 软引用:被软引用关联着的对象,在原创 2021-06-16 22:25:36 · 45 阅读 · 0 评论 -
2021-06-03
学习笔记:Java内存区域与内存溢出异常(二)--对象探秘1. 对象的创建2. 对象的内存布局2.1 对象头2.2 实例数据2.3 对齐填充3. 对象的访问 1. 对象的创建 当虚拟机遇到字节码new指令时,首先检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过;如果没有,则先执行类加载过程。 在类加载检查通过后,虚拟机将为新生对象分配内存。对象所需内存大小在类加载完成后便可完全确定。 2. 对象的内存布局 对象在堆内的存储布局可分为三个部分:原创 2021-06-03 22:53:23 · 53 阅读 · 0 评论 -
2021-06-03
Java内存区域与内存溢出异常(一)1. 运行时内存区域1.1 程序计数器1.2 Java虚拟机栈1.3 本地方法栈1.4 Java堆1.5 方法区1.6 本机直接内存 1. 运行时内存区域 运行时内存区域分为:程序计数器、java虚拟机栈、本地房发栈、java堆、方法区这几个内存区域。 程序计数器、Java虚拟机栈、本地方法栈都是线程私有的,生命周期与线程相同;而java堆、方法区则属于所有线程共享的内存区域。 1.1 程序计数器 程序计数器是当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过原创 2021-06-03 21:51:29 · 51 阅读 · 0 评论