JVM学习之二----整体结构深入了解

在学习JVM的时候,先了解一张整体的结构图和对应的名词。
在这里插入图片描述
1.堆:存储类实例,一个jvm只有一个堆内存。
2.栈(虚拟机栈):存储当前线程运行方法时所需要的数据,指令,返回地址等。
3.程序计数器:指向当前线程正在执行的字节码的地址,行号。
4.方法区(元空间):存储类信息,常量,运行时常量,静态变量等。
5.本地方法栈:同虚拟机栈,不同的是,它存的本地方法的数据。
写一个简单的demo程序

public class Math {

    public int compute(){
        int a = 1;
        int b = 2;
        int c=(a+b)*10;
        return c;
    }

    public static void main(String[] args) {
        Math math = new Math();
        math.compute();
    }
}

可以通过命令javap -c Math.class 进行生成一个汇编文件。

 0 iconst_1
 1 istore_1
 2 iconst_2
 3 istore_2
 4 iload_1
 5 iload_2
 6 iadd
 7 bipush 10
 9 imul
10 istore_3
11 iload_3
12 ireturn

可以对照jvm手册看出每一行的具体指令的含义。很明显,jvm运行时就由开始的五部分组成。
接下来具体说下对结构
在这里插入图片描述
年轻代:里面有Eden与Survivor区,默认占比是8:1:1.内存占用1/3
老年代:占用内存的2/3

jvm内存参数的设置:

 java ‐Xms2048M ‐Xmx2048M ‐Xmn1024M ‐Xss512K ‐XX:MetaspaceSize=256M ‐XX:MaxMetaspaceSize=256M ‐jar microservice‐eurek a‐server.jar

关于元空间的jvm参数有两个: -XX:MetaspaceSize 和 ‐XX:MaxMetaspaceSize
1.-XX:MetaspaceSize 设置元空间最大值,默认值是-1,即不限制,根据本地的内存大小。
2.‐XX:MaxMetaspaceSize 指定元空间触发Full gc 的初始阈值(元空间无固定的初始值),以字节为单位,默认为21M,达到该值就会触发full gc。同时收集器会对该值进行调整;
3.-Xss设置越小count值越小,说明一个线程栈里能分配的栈帧就越少。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

virtuousOne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值