- 博客(5)
- 收藏
- 关注
原创 java垃圾收集器如何得知对象是“活着”“死亡”
可达性分析计算主流的商用程序语言(JAVA、C#等等)主流实现中,都是通过可达性分析来判定对象是否存活的。这个算法的基本思路就是通过一系列的成为“GC Root”对象作为起点,从这节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Root没有任何引用链项链(即到GC Root不可达)时,则证明此对象是不可用的。在JAVA语言中可作为GC Root的对象包括下面几种:1.虚拟机栈...
2019-08-07 23:43:34
210
原创 java对象的内存布局和访问定位
对象的内存布局1.对象头(Object Header)第一部分存储对象自身运行时数据,如哈希码(HashCode)、GC分带年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等,这部分数据长度在32位和64位虚拟机(未开启指针压缩)中分别为32bit和64bit,官方称他为“Mark Word”。第二部分类型指针,即指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个clas...
2019-08-06 22:44:49
191
原创 java堆中对象分配、布局和访问全过程
对象的创建虚拟机遇到一条new指令时,首先去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过,如果没有就先执行相应的类加载过程。指针碰撞: java类加载完成后便可确认确定,为对象分配空间任务等同把一块确定大小的内存从Java堆中划分出来。假设java堆中内存是绝对规整的,所有用过的内存放在一边,空闲的内存放在另一边,中间放着一...
2019-08-06 21:53:54
247
原创 JVM垃圾收集器总结
G1G1收集器如何避免全堆扫描G1收集器将整个JAVA堆划分多个大小相等的Region区域,每个Region都对应一个 Remembered Set虚拟机都是利用Remembered Set避免全堆扫描,虚拟机发现程序对Reference类型的数据进行写操作时,会产生一个 Write Barrier暂时中断写操作,检查Reference引用的对象是否处于不同的Region中,如果是,便通过Ca...
2019-08-05 23:03:31
206
转载 StarUML 3.0.2 破解
最近StarUML由2.0更新到3.0。原来的破解方法,修改license验证函数的方式不能用了。安装位置都变了,已经找不到LicenseManagerDomain.js这个文件了。那该怎么办?老司机告诉大家解决办法。StarUML是用nodejs写的。确切的说是用Electron前端框架写的。新版本中所有的starUML源代码是通过asar工具打包而成。确切的代码位置在“%LOCALAPPDA...
2018-10-23 13:53:20
3574
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人