2020-10-10:OOM都有哪些,说出几种?
【摘要】 福哥答案2020-10-10:#福大大架构师每日一题#[答案参考了此链接:](https://cloud.tencent.com/developer/article/1480668)本地方法栈:1.Out of swap space:该错误表示所有可用的虚拟内存已被耗尽。虚拟内存(Virtual Memory)由物理内存(Physical Memory)和交换空间(Swap Space)两部...
福哥答案2020-10-10:#福大大架构师每日一题#
[答案参考了此链接:](https://cloud.tencent.com/developer/article/1480668)
本地方法栈:
1.Out of swap space:该错误表示所有可用的虚拟内存已被耗尽。虚拟内存(Virtual Memory)由物理内存(Physical Memory)和交换空间(Swap Space)两部分组成。当运行时程序请求的虚拟内存溢出时就会报 Outof swap space 错误。
2.Unable to create new native thread:每个 Java 线程都需要占用一定的内存空间,当 JVM 向底层操作系统请求创建一个新的 native 线程时,如果没有足够的资源分配就会报此类错误。
虚拟机栈:
1.java.lang.StackOverflowError :栈内存溢出,可能会被部分面试官怼,说这个不是OOM,得注意。
堆区:
1.Java heap space :当 Java 进程花费 98% 以上的时间执行 GC,但只恢复了不到 2% 的内存,且该动作连续重复了 5 次,就会抛出 。
2.Kill process or sacrifice child:有一种内核作业(Kernel Job)名为 Out of Memory Killer,它会在可用内存极低的情况下“杀死”(kill)某些进程。OOM Killer 会对所有进程进行打分,然后将评分较低的进程“杀死”,具体的评分规则可以参考 Surviving the Linux OOM Killer。
3.GC overhead limit exceeded (GC回收时间过长,且超过98%的时间都在做垃圾回收且回收的堆内存只占2%造成程序的恶性循环,便会抛出该错误。)
方法区:
1.Requested array size exceeds VM limit:JVM 限制了数组的最大长度,该错误表示程序请求创建的数组超过最大长度限制。
2.Meatespace :JDK 1.8 使用 Metaspace 替换了永久代(Permanent Generation),该错误表示 Metaspace 已被用满,通常是因为加载的 class 数目太多或体积太大。
3.PermGen space:该错误表示永久代(Permanent Generation)已用满,通常是因为加载的 class 数目太多或体积太大。
直接内存:
1.Direct buffer memory:Java 允许应用程序通过 Direct ByteBuffer 直接访问堆外内存,许多高性能程序通过 Direct ByteBuffer 结合内存映射文件(Memory Mapped File)实现高速 IO。
如有错误,请指正。
***
[评论](https://user.qzone.qq.com/3182319461/blog/1602286148)
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
- 2025-03-07:网格图操作后的最大分数。给定一个 n x n 的二维矩阵 grid,初始时所有格子均为白色。你可以进行操作
- 2025-03-06:给定一个长度为 n 的整数组 nums,其中 n 是偶数,同时还有一个整数 k。 你可以进行一些操作,每次
- 绝了!k3s (k8s) 安装 ollama 运行 deepseek 全流程揭秘,yaml全公开
- 2025-03-04:求出硬币游戏的赢家。用go语言,给定两个正整数 x 和 y,分别代表75元和10元硬币的数量。 Alice
- 2025-03-03:切蛋糕的最小总开销Ⅱ。用go语言,你有一个大小为 m x n 的矩形蛋糕,需要将其切割成 1 x 1 的小
评论(0)