什么是内存溢出?在哪些区域会发生内存溢出?


prtyaa
prtyaa 2024-01-28 23:37:02 67094 赞同 0 反对 0
分类: 资源 标签: 后端
什么是内存溢出?在哪些区域会发生内存溢出?

JVM执行代码,当然得把类加载到内存里来!

JVM的内存区域里,有一块区域叫做永久代,JDK 1.8以后都叫做Metaspace,这块内存区域就是用来存放系统里的各种类的信息的,包括JDK自身内置的一些类的信息。

可能发生内存溢出的区域有:

1、Metaspace

2、每个线程的虚拟机栈内存。


在一个JVM中,Metaspace区域的大小是固定的,比如512MB。

那么一旦JVM不停地加载类,加载了很多很多的类,然后Metaspace区域放满了,就会触发Full GC,Full GC会带着一块 进行Old GC就是回收老年代的,也会带着回收年轻代的Young GC。

当然,Full GC的时候,必然会尝试回收Metaspace区域中的类

那么什么样的类才是可以被回收的呢?

比如这个类的类加载器先要被回收,比如这个类的所有对象实例都要被回收,等等。

所以一旦你的Metaspace区域满了,未必能回收掉里面很多的类,而且jvm还不停的往进加载其他类,那么直接就内存溢出了。


3、到底什么情况下会发生Metaspace内存溢出?

第一种原因,在上线系统的时候对Metaspace区域直接用默认的参数,默认的Metaspace区域可能才几十MB而已,此时对于一个稍微大型一点的系统,因为他自己有很多类,还依赖了很多外 部的jar包有有很多的类,几十MB的Metaspace很容易就不够了。

第二种原因:很多人写系统的时候会用cglib之类的技术动态生成一些类,一旦代码中没有控制好,导致生成的类过于多的 时候,就很容易把Metaspace给塞满,进而引发内存溢出


4、到底什么情况下会发生虚拟机栈内存溢出?

方法递归

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
prtyaaL1
粉丝 1 资源 1949 + 关注 私信
最近热门资源
国产操作系统环境搭建(内含镜像资源链接和提取码)  94
银河麒麟桌面操作系统V10SP1-2403-update1版本中,通过“麒麟管家-设备管理-硬件信息-硬盘”查看硬盘类型时,显示的是HDD(机械硬盘),而实际上该笔记本的硬盘类型为SSD  90
分享几个在日常办公中可以用到的shell脚本  82
bat脚本生成查看电脑配置\硬件信息  80
以openkylin为例编译安装内核  79
常见系统问题及其解决方法  79
分享解决宏碁电脑关机时自动重启的方法  76
统信uosboot区分未挂载导致更新备份失败  71
分享如何解决报错:归档 xxx.deb 对成员 control.tar.zst 使用了未知的压缩,放弃操作  69
loadrunner常见问题整理  65
最近下载排行榜
国产操作系统环境搭建(内含镜像资源链接和提取码) 0
银河麒麟桌面操作系统V10SP1-2403-update1版本中,通过“麒麟管家-设备管理-硬件信息-硬盘”查看硬盘类型时,显示的是HDD(机械硬盘),而实际上该笔记本的硬盘类型为SSD 0
分享几个在日常办公中可以用到的shell脚本 0
bat脚本生成查看电脑配置\硬件信息 0
以openkylin为例编译安装内核 0
常见系统问题及其解决方法 0
分享解决宏碁电脑关机时自动重启的方法 0
统信uosboot区分未挂载导致更新备份失败 0
分享如何解决报错:归档 xxx.deb 对成员 control.tar.zst 使用了未知的压缩,放弃操作 0
loadrunner常见问题整理 0
作者收入月榜
1

prtyaa 收益401.13元

2

zlj141319 收益237.91元

3

哆啦漫漫喵 收益231.75元

4

IT-feng 收益219.92元

5

1843880570 收益214.2元

6

风晓 收益208.24元

7

777 收益173.17元

8

Fhawking 收益106.6元

9

信创来了 收益106.03元

10

克里斯蒂亚诺诺 收益91.08元

请使用微信扫码

添加我为好友,拉您入交流群!

请使用微信扫一扫!