JVM的随笔小记

首先来看一下JVM在java平台中的位置

Platform Standard Edition
JVM:可以叫做内存管理(数据、指令、控制)

JVM运行时数据区

JDK1.7之前
在这里插入图片描述
java中执行最小单位:线程
1、程序计数器:指向当前线程正在执行的字节码指令地址
2、虚拟机栈:存储当前线程运行时所需要的数据、指令、返回地址(运行java方法)
3、本地方法栈: 运行本地方法,类似虚拟机栈
虚拟机栈数据共享逻辑图
在这里插入图片描述
4、方法区(永久代):类信息、常量(1.7.4之后有变化)、静态变量、JIT(1.7之前)
JIT:just in time,即时编译技术。使用该技术,可以加速java程序的运行速度。
5、Heap:分代机制
1.7之前
在这里插入图片描述
1.7之后
在这里插入图片描述
永久代变成了元空间(Meta Space)

举例:

String str = new String();
1.7之前,存放在方法区中
1.7之后,存放在Heap中

总结
Metaspace与永久代区别:

永久代使用的是JVM的堆内存,但是Metaspace并不在虚拟机中,而是使用计算机的物理内存。
Metaspace的大小受本地内存的限制,类的元数据放入本地内存,字符串池和类的静态变量放入java堆中,这样可以加载多少类的元数据不再由MaxPermSize控制,而是由系统的实际空间控制。

这样并不是说Metaspace可以无限大了,Metaspace越大,Heap的空间就会越小,适合自己是做好的。

-XX:PermSize 设置持久代(perm gen)初始值,物理内存的1/64
-XX:MaxPermSize 设置持久代最大值,物理内存的1/4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值