JVM调优笔记

JAVA官网关于JDK、JRE、JVM的描述

在这里插入图片描述

class文件格式

ClassFile {
   
    u4             magic;
    u2             minor_version;
    u2             major_version;
    u2             constant_pool_count;
    cp_info        constant_pool[constant_pool_count-1];
    u2             access_flags;
    u2             this_class;
    u2             super_class;
    u2             interfaces_count;
    u2             interfaces[interfaces_count];
    u2             fields_count;
    field_info     fields[fields_count];
    u2             methods_count;
    method_info    methods[methods_count];
    u2             attributes_count;
    attribute_info attributes[attributes_count];
}

class文件是16进制文件,u4代表8个数字。

类加载机制

Person.class–类加载机制–JVM

(1)装载

​ a-先找到类文件所在的位置:磁盘、网络 全路径 —> 类装载器Classloader.find(String name) --> 寻找

双亲委派

​ b-类文件的信息交给JVM --> 类文件字节码流静态存储 -->JVM中Method Area(方法区)

​ c-类文件锁对应的对象Class–>JVM中的Heap(堆)

(2)链接

​ a-验证

​ 保证被加载类的正确性

​ b-准备

​ 要为类的静态变量分配内存空间,并将其值初始化默认值。

​ static int a=10;–>初始化成0

​ c-解析

​ 将类中的符号引用转换为直接引用。

​ 符号引用:class文件格式规范,比如u4多少位,表示某个意思,如String str[aec0 flag]

​ 直接引用:改成内存中实际的地址

(3)初始化

​ 为静态变量赋予真正的值 a=10

JVM运行时数据区

2.5.3. Heap【堆】

2.5.4. Method Area【方法区】

2.5.5. Run-Time Constant Pool【运行时常量池,在方法区中】

【方法区+堆】

2.5.1. The pc Register【程序计数器】

2.5.2. Java Virtual Machine Stacks【线程执行方法的表示】【Java虚拟机栈】

2.5.6. Native Method Stacks【本地方法栈】

【栈】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值