JVM 基本结构

白昼怎懂夜的黑 提交于 2019-12-06 02:04:03

 

 

  • Java虚拟机基本结构

  • 角色:字节码执行引擎,垃圾回收系统,方法区,Java堆,直接内存[共享],类加载子系统,PC寄存器(计数器),本地方法栈,Java栈[私有]

  • 垃圾回收的工作重点:方法区,Java堆,直接内存

  • 一个Java线程对应一个java栈

  • 参数

  • 程序参数:应用程序使用

  • 虚拟机参数:虚拟机使用

  • Java堆的结构

  • 新生代 : young

  • from

  • to

  • eden :对象创建的地方

  • ——-> young转换到tenured:对象年龄

  • 老生代:tenured

Java  [-options]虚拟机参数   class[java类]  args[主函数的参数]

获取jvm的最大内存 -Xms32M

System.out.println(Runtime.getRuntime().maxMemory()/1000/1000 + “M”);

指定栈的最大空间 -Xss256K ,影响栈深度:1.参数个数 2.局部变量个数

局部变量槽位复用:b会复用a的槽位

public static void localvar2(){    {        int a = 0 ;        System.out.println(a);    }    int b = 0;}

局部变量的垃圾回收的根节点

-XX:PrintGC 打印垃圾回收日志

栈上分配 : 逃逸分析(成员变量还是局部变量)

-server : server模式下运行java程序

-XX:+DoEscapeAnalysis 逃逸分析 ,server模式下才能进行逃逸分析

-XX:+EliminateAllocations 标量替换

java 1.6,1.7方法区

-XX:PermSize 初始值

-XX:MaxPermSize 默认64M

java1.8 元数据区

-XX:MaxMetaspaceSize ,是一块堆外的直接内存

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!