JVM——方法区

堆栈,方法区的交互

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oEYPuTYL-1658120560505)(D:\Learn\java\JVM\方法区.assets\image-20220612120706238.png)]

关系图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dy9kGyMC-1658120560505)(D:\Learn\java\JVM\方法区.assets\image-20220612120830066.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mNFg87YZ-1658120560506)(D:\Learn\java\JVM\方法区.assets\image-20220612132558430.png)]

方法区的基本理解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uYVIan81-1658120560506)(D:\Learn\java\JVM\方法区.assets\image-20220612133016167.png)]

OOM: 加载大量的第三方jar包,Tomcat部署的工程过多(30-50)

大量动态生成反射类

方法区大小的设置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QNZFTtKZ-1658120560506)(D:\Learn\java\JVM\方法区.assets\image-20220612142714800.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-93aEfznY-1658120560507)(D:\Learn\java\JVM\方法区.assets\image-20220612142730377.png)]

-XX:MetaspaceSize=100m -XX:MaxMetaspaceSize=100m

方法区主要是存放实例。利用反射生成大量的类就可以把内存撑爆!OOM

如何解决OOM

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iJod0H5L-1658120560507)(D:\Learn\java\JVM\方法区.assets\image-20220612144111883.png)]

方法区主要存储哪些内容

已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等

类型信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4yky7DE0-1658120560507)(D:\Learn\java\JVM\方法区.assets\image-20220612144706428.png)]

域信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bnglg3EM-1658120560508)(D:\Learn\java\JVM\方法区.assets\image-20220612144721257.png)]

方法信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jJm9UVoT-1658120560508)(D:\Learn\java\JVM\方法区.assets\image-20220612144819950.png)]

运行时常量池

字节码文件中的常量池文件通过类加载子系统到方法区后就叫做运行时常量池

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ySGGD1Zn-1658120560508)(D:\Learn\java\JVM\方法区.assets\image-20220612153420686.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TdMsHCMA-1658120560508)(D:\Learn\java\JVM\方法区.assets\image-20220612151308154.png)]

一个有效的字节码文件中除了包含类的版本信息、字段、方法及接口等信息外,还包含一项信息那就是常量池表,包括各种字面量和类型、域和方法的符号引用。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fbuqnSXt-1658120560509)(D:\Learn\java\JVM\方法区.assets\image-20220612152219871.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k1k0qhvh-1658120560509)(D:\Learn\java\JVM\方法区.assets\image-20220612152846884.png)]

小结

常量池:可以看作是一张表,虚拟机指令根据这张常量表找到要执行的类名,方法名, 参数类型,字面量等类型。

图示举例方法区的使用

方法区演进细节

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rxEMjIPI-1658120560509)(D:\Learn\java\JVM\方法区.assets\image-20220612202359263.png)]

永久代为什么要被换成元空间

字面量的替换

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JW6qpx4h-1658120560510)(D:\Learn\java\JVM\方法区.assets\image-20220612210410297.png)]

方法区的垃圾收集

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FxqDc3Vf-1658120560510)(D:\Learn\java\JVM\方法区.assets\image-20220612225057087.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-okM87Pk4-1658120560510)(D:\Learn\java\JVM\方法区.assets\image-20220612225450565.png)]

常见题目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pkD5Dir3-1658120560513)(D:\Learn\java\JVM\方法区.assets\image-20220612225748232.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EA7qTa1B-1658120560513)(D:\Learn\java\JVM\方法区.assets\image-20220612225824556.png)]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值