HotSpot GC可达性分析的实现原理
一、基本概念
基本思想就是通过一系列的称为 “GC Roots” 的对象作为起点,从这些节点开始向下搜索,节点所走过的路径称为引用链,当一个对象到 GC Roots 没有任何引用链相连的话,则证明此对象是不可用的。 继续阅读→
阅读全文基本思想就是通过一系列的称为 “GC Roots” 的对象作为起点,从这些节点开始向下搜索,节点所走过的路径称为引用链,当一个对象到 GC Roots 没有任何引用链相连的话,则证明此对象是不可用的。 继续阅读→
阅读全文堆中对象堆的存储布局可分为三个部分:对象头(Header)、实例数据(Instance Data)、填充(Padding)
继续阅读→
1.方法内联
继续阅读→
1.解析
继续阅读→
我们来看这样一个类
继续阅读→
运行时数据区如图: 继续阅读→
阅读全文我们在new一个对象时,都会在堆中开辟一个内存空间给这个对象。
那么多个线程如果开辟到了同一个地址的内存,不就冲突了?
继续阅读→
java的内存模型
继续阅读→
类加载器主要又三种:
加载class的过程是:装载、链接、初始化
继续阅读→
我们可以使用如下命令,查看当前java编译器和编译器模式:
继续阅读→
Object类提供类finalize方法,用于用户自定义销毁逻辑,如果对象有特殊的销毁逻辑,便可以重写finalize方法
继续阅读→
1、==比较的是内存的地址,而不是地址指向的值
2、equals通过都是对象重写的包装方法,通常都是对比值是否相同
继续阅读→
一、强引用
我们正常new一个对象,就是强引用
String hello = new String(“value”); 继续阅读→
jps : 虚拟机进程状况工具
-q:仅输出VM标识符,不包括classname,jar name,arguments in main method; -m:输出main method的参数; -l:输出完全的包名,应用主类名,jar的完全路径名,进程号; -v:输出jvm参数 ; -V:输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件 ;阅读全文
记录运行是GC详细数据信息并输出
-XX:+PrintGCDetails阅读全文
jvm的命令行选项包括:
standard options,会保持前后兼容性
nonstandard options(-X),可能会发生变化
developer options(-XX),有特定的系统要求,或需要调整特定的系统参数
继续阅读→
为了更快看到结果,我们将JVM的启动参数配置为:
-XX:+HeapDumpOnOutOfMemoryError -Xmx10m -Xms10m阅读全文
1、运行时导出
jmap -dump:format=b,file=[文件路径] [pid]阅读全文
编辑demo.sh脚本内容如下
继续阅读→