JVM相关知识

JVM内存模型

堆、方法区、虚拟机栈、本地方法栈、程序计数器
在这里插入图片描述

  • 堆和方法区 是所有线程共享的, 虚拟机栈&本地方法栈&程序计数器每个线程都有;

  • 堆是存放实例对象的地方;

  • 方法区是存放类信息(静态属性,静态方法,常量池)的地方;

  • 虚拟机栈是存放Java线程方法调用信息的地方,一个方法调用就会有一个栈帧;栈帧(局部变量表,操作数栈,动态连接,方法出口)记录了一个方法调用的所有信息(方法调用的局部变量,操作数在操作数栈临时存放,连接到其他方法的地址,记录调用完该方法返回到哪个地方继续执行);

  • 本地方法栈与虚拟机栈类似,不过它记录的是本地方法的调用

  • 程序计数器用于线程上下文切换恢复信息的记录

对象的内存布局

对象在堆内存中的存储布局可分为3部分:对象头,实例数据,对齐填充在这里插入图片描述

类加载机制

  • 类加载过程

加载:

通过一个类的全限定类名来获取定义此类的二进制字节流

将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构

在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口

验证:

确保Class文件的字节流中包含的信息符合JVM的要求,保证不危害JVM的安全

准备:

为类中定义的变量分配内存并设置类变量初始值(零值)的阶段

解析:

JVM将常量池内的符号引用替换为直接引用的过程

初始化:

执行类构造器()方法的过程

  • 类加载器

在这里插入图片描述

双亲委派机制:先检查请求加载的类型是否已经被加载过,若没有则调用父加载器的loadClass()方法,若父加载器为空则默认使用启动类加载器作为父加载器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值