JVM 基本结构

  • 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 ,是一块堆外的直接内存

原文地址:https://www.cnblogs.com/fubinhnust/p/11956017.html