JVM内部结构简介

本文详细介绍了JVM的基本构成,包括类加载系统、JVM内存结构,如元数据空间、PC寄存器、堆内存、JAVA栈内存和直接内存。堆内存是GC的主要回收空间,而栈内存由栈帧组成,每个线程都有自己的PC寄存器。元数据空间存储类的元数据信息,可通过参数限制其大小以避免溢出。JVM的垃圾回收机制和执行引擎确保了程序的高效运行。
摘要由CSDN通过智能技术生成

基本构成

JVM主要构成如下如下图:
在这里插入图片描述

类加载系统

类加载主要负责类的加载,校验,准备,解析,初始化。
详细见:JVM类装载机制

JVM内存结构

元数据空间

JDK 7之前称为方法区或者永久区,主要存放的是类的元数据信息,如:类名,属性名,方法名,常量值等等。比如:

public class Demo1 {
   
    int a ;
    public static void main(String[] args) {
   
        String name = "rongoof";
    }
}

我们可以通过jbe下载地址工具打开,查看字节码信息。
在这里插入图片描述
元数据区属于堆外直接内存,所以也是线程共享的内存空间。
元数据区如果不指定大小的话,可用大小就是机器的物理内存。可以通过
-XX:MetaspaceSize 参数限制其大小,
JDK7可以通过
-XX:MaxPermSize 指定大小,其默认为64M。
注意:如果设置的过小,而系统的.class文件过多(包含通过代理机制生成的动态类),就可能会产生元数据内存溢出。

PC寄存器

PC寄存器是每个线程私有的,它指向当前方法正在执行的指令,如果当前方法是本地方法,则值为undefined。

堆内存

堆内存就是实际存放对象的内存空间,也是GC回收的主要空间,是所有线程共享的内存空间。
堆内存可以通过参数JVM参数 -Xmx 指定。通过IDE,我们可以进行设置
在这里插入图片描述

public static void main(String[] args) <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值