2 jvm内存模型
2022-07-31 11:13:41 0 举报
AI智能生成
登录查看完整内容
jvm内存模型
作者其他创作
大纲/内容
类装载子系统
存放对象实例
-Xmx –Xms
Eden
Survivor
新生代
8:1:1,可调
老年代
划分
堆(线程共享)
线程执行方法的内存模型
一个线程一个虚拟机栈
以索引的方式使用该表,索引为0默认指向该方法的对象引用,可以用this调用它
存储方法参数和方法内部局部变量
局部变量少的函数可以支持更深层的调用,调用次数就越多
局部变量表
先进后出,最大深度:max_stacks,编译期间确认
存取中间结果,也会存返回值
字节码执行引擎的工作区
操作数栈
运行时常量池中的符号引用替换成直接引用
动态链接
恢复上层方法的局部变量表和操作数栈,返回值(如果有)压入上层方法的操作数栈中
程序计数器的值指向下一个指令地址
方法出口
每个方法一个栈帧
不存在垃圾回收问题,线程结束就释放
线程请求的栈深度大于虚拟机允许的深度,抛StackOverFlowError异常
若可动态扩展,无法申请到足够内存时,抛OutOfMemoryError异常,通过-Xss指定占空间,大小决定函数调用深度
2种异常
虚拟机栈(线程私有)
native
本地方法栈(线程私有)
常量+静态变量+类元信息+运行时常量池
由堆上的对象头里_klass指针指向该对象的类结构信息
直接内存
元空间(线程共享)
程序计数器(线程私有)
运行时数据区(内存模型)
字节码执行引擎
jvm整体结构划分
jvm整体结构和内存模型关系
-Xmx
-Xms
依据业务
-Xmn(新生代)
堆参数
一般设置为一样大小
-Xss
虚拟机栈参数
-XX:MetaspaceSize=
-XX:MaxMetaspaceSize=
元空间参数
jvm参数配置
jvm内存模型
0 条评论
回复 删除
下一页