【JVM】JVM内存模型与操作系统内存模型(一)

JVM内存模型与操作系统内存模型

Java进程在操作系统内存中的结构

在这里插入图片描述

JVM内存模型

在这里插入图片描述

可以这样理解:JVM内存模型其实就是JVM在启动的时候从操作系统内存中要了一块大内存,然后将这个大内存分成五个区域:方法区、堆区、虚拟机栈、本地方法栈、本地方法栈、程序计数器.其实叫JVM运行时区域更合适。但是要区分JVM内存模型与JMM(Java Memory Model)

InstanceKlass:类的元信息(方法区)
InstanceMirrorKlass:镜像类Class对象(堆区)

四个名词:
class文件:即硬盘上的.class文件
class content:类加载器将硬盘上的.class文件读入内存中的那一块内存区域
Class对象:

Class<?> clazz = Test.class

对象:

Test obj = new Test();

方法区

方法区是虚拟机的一种规范
不同版本虚拟机堆方法区的具体实现
永久代(1.8之前是在堆区)
元空间(1.8之后,在直接内存上)

  • 1.永久代的缺点?
    放在堆上,很难触犯类的卸载机制
    1.1 Class对象没有被使用
    1.2 被三大类加载器加载的类不会被卸载,自定义类加载器才会被卸载
    1.3 释放的内存很少
    1.4 为什么早期没有一开始使用元空间的方式呢?早期是没有成熟的动态字节码技术的,现在cglib、asm技术、热更新技术可能会去创建新的类,会造成永久代的OOM,进而会引发堆区的OOM
  • 2.元空间是如何解决?
    2.1 不放在堆区,放在直接内存
  • 3.元空间内部是如何存储的?元空间存在的问题?以及后面会如何优化
    类加
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

coffee_babe

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

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

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

打赏作者

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

抵扣说明:

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

余额充值