摘要: 作为GCRoots的对象 虚拟机栈 方法区的类属性所引用的对象 方法区中常量所引用的对象 本地方法栈中所引用的对象 阅读全文
posted @ 2019-08-20 17:23 梅花GG 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 引用计数法: 在对象中添加一个引用计数器,当有地方引用对象的时候,引用计数器的值就+1 ,当引用失效的时候计数器的值就 -1 打印垃圾回收的参数 -verbose:gc -XX: +PrintGCDetail 使用程序模拟下图的 对象引用来测试 jdk 1.8 使用的是否是 引用计数法 m1 引用 阅读全文
posted @ 2019-08-20 16:59 梅花GG 阅读(404) 评论(0) 推荐(0) 编辑
摘要: 对象的结构 Header (对象头) 自身运行时的数据 (Mark Word) 哈希值 GC分代年龄 锁状态标志 线程持有的锁 偏向线程ID 偏向时间戳 自身运行时的数据 (Mark Word) 哈希值 GC分代年龄 锁状态标志 线程持有的锁 偏向线程ID 偏向时间戳 自身运行时的数据 (Mark 阅读全文
posted @ 2019-08-20 11:24 梅花GG 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 对象创建的流程图(来自龙果学院) 对象的<init> 方法包括: 代码块、构造方法 一、给对象分配内存 1.指针碰撞: 分为已使用的内存和未使用的内存 通过中间的指针来进行移动,来给创建的对象分配内存 2.空间列表 具体使用哪种方法给对象分配内存空间,由 堆内存空间是否规整来决定,而 堆内存空间是否 阅读全文
posted @ 2019-08-20 11:05 梅花GG 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 代码执行的结果: true false true false 出现上面的 结果的解释如下图 任何一个字符串的创建都会扔到常量池中,常量池是方法区的一块存储空间 通过new 创建的对象会放到堆上 == 比较的对对象的内存地址 String 在常量池中存储的数据结构类似一个HashSet ,里面存储的是 阅读全文
posted @ 2019-08-20 10:08 梅花GG 阅读(308) 评论(0) 推荐(0) 编辑