![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
JVM学习笔记
清风无敌风
这个作者很懒,什么都没留下…
展开
-
JVM - 怎么判断对象死亡?哪些可以作为 root 呢?
1. 怎么判断对象死亡?根可达算法引用计数法2.哪些对象可以作为 GC Roots 呢?虚拟机栈(栈帧中的本地变量表)中引用的对象本地方法栈(Native 方法)中引用的对象方法区中类静态属性引用的对象方法区中常量引用的对象所有被同步锁持有的对象...原创 2022-05-06 22:33:40 · 416 阅读 · 0 评论 -
JVM - Java对象创建和JVM
1.Java对象结构2.Java对象创建过程存储位置:JVM堆内存结构:(以下是按64位JVM)对象头包含markword和clazz point两部分,其分别包含:markword:clazz point:在开启和关闭指针压缩时(-XX:+UseCompressedOops)对象体作用是保存对象的属性,同上,在开启和关闭指针压缩时,填充对齐当对象是数组类型时,会有额外的4字节记录数组长度大小,因此Java数组可以申请的最大长度为:2^32....原创 2022-07-06 14:41:28 · 157 阅读 · 0 评论 -
JVM - 内存分配与回收机制
内存分配与回收机制1、优先在Eden区分配对象的分配是优先在Eden区上分配,当Eden区对象分配满了,会执行 Minor gc2、大对象直接进入老年代-XX:PretenureSizeThreshold 参数只对Serial和ParNew两款新生代收集器有效,是说当新建的对象内存大于此设置大小,就会直接将大对象分配到老年代中。3、长期存活的对象将进入老年代-XX:MaxTenuringThreshold=xx 默认是15Eden区对象经过minor gc 回收后存活的对象会转移到 surv原创 2022-05-06 22:29:17 · 931 阅读 · 0 评论 -
JVM - intern()
字面量 引用 字符串常量池 intern() Strings.intern() 返回的是字符串s在字符串常量池中的引用。首先判断字符串常量池中是否有 “sss” 如果有则返回其引用地址如果没有则创建一个然后返回 sss 的引用地址原创 2022-05-07 09:08:30 · 233 阅读 · 0 评论 -
JVM-对象内存分配方式--两种方式
对象内存分配的两种方法指针碰撞空闲列表为对象分配空间的任务等同于把一块确定大小的内存从Java堆中划分出来。与垃圾回收机制有关:对于MS的垃圾回收器,是使用空闲列表进行分配;对于MC的垃圾回收器,是使用指针碰撞进行分配。(1)指针碰撞(Serial、ParNew等带Compact过程的收集器)假设Java堆中内存是绝对规整的,所有用过的内存都放在一边,空闲的内存放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那个指针向空闲空间那边挪动一段与对象大小相等的距离,这种原创 2022-05-06 22:24:31 · 1145 阅读 · 0 评论 -
JVM - 类的加载过程
加载 -- 链接 -- 初始化 一、加载完成的事情:二、链接完成的事情:验证 -- 准备 -- 解析三、初始化完成的事情:原创 2022-07-06 14:38:39 · 442 阅读 · 0 评论