随笔分类 -  JVM

Java 高级知识
摘要:作为GCRoots的对象 虚拟机栈 方法区的类属性所引用的对象 方法区中常量所引用的对象 本地方法栈中所引用的对象 阅读全文
posted @ 2019-08-20 17:23 梅花GG 阅读(275) 评论(0) 推荐(0)
摘要:引用计数法: 在对象中添加一个引用计数器,当有地方引用对象的时候,引用计数器的值就+1 ,当引用失效的时候计数器的值就 -1 打印垃圾回收的参数 -verbose:gc -XX: +PrintGCDetail 使用程序模拟下图的 对象引用来测试 jdk 1.8 使用的是否是 引用计数法 m1 引用 阅读全文
posted @ 2019-08-20 16:59 梅花GG 阅读(443) 评论(0) 推荐(0)
摘要:对象的结构 Header (对象头) 自身运行时的数据 (Mark Word) 哈希值 GC分代年龄 锁状态标志 线程持有的锁 偏向线程ID 偏向时间戳 自身运行时的数据 (Mark Word) 哈希值 GC分代年龄 锁状态标志 线程持有的锁 偏向线程ID 偏向时间戳 自身运行时的数据 (Mark 阅读全文
posted @ 2019-08-20 11:24 梅花GG 阅读(297) 评论(0) 推荐(0)
摘要:对象创建的流程图(来自龙果学院) 对象的<init> 方法包括: 代码块、构造方法 一、给对象分配内存 1.指针碰撞: 分为已使用的内存和未使用的内存 通过中间的指针来进行移动,来给创建的对象分配内存 2.空间列表 具体使用哪种方法给对象分配内存空间,由 堆内存空间是否规整来决定,而 堆内存空间是否 阅读全文
posted @ 2019-08-20 11:05 梅花GG 阅读(236) 评论(0) 推荐(0)
摘要:代码执行的结果: true false true false 出现上面的 结果的解释如下图 任何一个字符串的创建都会扔到常量池中,常量池是方法区的一块存储空间 通过new 创建的对象会放到堆上 == 比较的对对象的内存地址 String 在常量池中存储的数据结构类似一个HashSet ,里面存储的是 阅读全文
posted @ 2019-08-20 10:08 梅花GG 阅读(334) 评论(0) 推荐(0)
摘要:Demo01: 编写代码如下: 代码执行结果: 3 Demo02: 然后将FinalTest 类中的 public static final x = 3 中的final 去掉 改成 public satic in x = 3 执行结果如下: FinalTest static block! 3 Dem 阅读全文
posted @ 2019-07-08 17:53 梅花GG 阅读(298) 评论(0) 推荐(0)
摘要:在父亲委托机制中,各个加载器按照父子关系形成了树形结构,除了根类加载器之外,其余类加载器都有且只有一个父加载器 通俗理解: 某一个类加载器加载一个特定的类,他并不是立即由自己加载了,而是将这个动作委托给父亲来完成,如果父亲还有父亲,就继续将这个动作向上传递,一直到没有父亲的 根类加载器 也就是启动类 阅读全文
posted @ 2019-07-08 14:57 梅花GG 阅读(309) 评论(0) 推荐(0)