微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JVM优质博客内容汇总

在这里插入图片描述

JVM参数调优
https://www.cnblogs.com/anyehome/p/9071619.html
JVM类加载器机制与类加载过程(运行main方法的原理)
https://blog.csdn.net/m0_45406092/article/details/108976907
《Java虚拟机原理图解》1.3、class文件中的访问标志、类索引、父类索引、接口索引集合
https://blog.csdn.net/luanlouis/article/details/41039269

Class文件划分七个区域,通过区域间的关联完成了对整个类的描述,会有固定的地方对字段、方法、类名、父类名、实现的接口等进行描述,但是很多描述可能存储的是类似索引的指针,例如指向常量池中,常量池和访问标志中存储一些具体信息。属性表集合和访问标志可能也储存了一些具体信息。

Class文件由七个部分组成:
魔数与Class文件版本
常量池
访问标志
类索引、父类索引、接口索引
字段表集合
方法表集合
属性表集合

魔数与Class文件版本:用于判断文件是否是能被jvm接收的class文件,固定值是0xCAFEBABE(咖啡宝贝)
常量池: 用于存放类中定义的常量变量、全限定类名全限定方法
访问标志:用于记录class文件中元素的类型,例如记录是否是public 是否是final 是不是一个接口 是否是注解、枚举、abstract等
类索引、父类索引、接口索引:类索引指向常量池中的一个常量池项,记录了这个类的全限定类名。父类索引同理,接口索引是个集合记录了该类实现的多个接口同样指向多个记录了全限定类名的常量池项
字段表集合
用于对类中的变量(局部变量除外)等字段进行描述,存储了访问标志、作用域是否静态可变可见性数据类型等信息
方法表集合
用于对类中的方法,进行描述,存储了作用域、返回值类型是否静态等
属性表集合
在Class文件、字段表和方法表都可以携带自己的属性信息,这个信息用属性表进行描述,用于描述某些场景专有的信息。

Java中可以作为GC Roots的对象

虚拟机栈(栈帧中的本地变量表)中引用的对象
方法区中类静态属性引用的对象
方法区中常量引用的对象
本地方法栈中JNI(即一般说的native方法)中引用的对象

finalize:
如果对象重写了finalize方法,在第一次垃圾回收的时候会调用方法,GC看到对象重写了该方法会将其丢到一个队列中,由finalizeThread对其进项finalize方法调用

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐