zoukankan      html  css  js  c++  java
  • 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)两部分组成。当运行时程序请求的虚拟内存溢出时就会报 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)

  • 相关阅读:
    fstream之seekp/seekg/ios::ate/ios::app
    undefined reference to `shm_unlink'
    extern "C"用法
    CentOS 6.2 安装kdbg
    ROW模式的SQL无法正常同步的问题总结
    Mysql之sync-binlog参数
    本地连接远程环境mysql报错:Host'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server
    64位linux下rpm安装mysql的5.5.55版本所遇到的坑
    jquery中ajax异步调用接口
    jquery调用spring mvc接口返回字符串匹配
  • 原文地址:https://www.cnblogs.com/waitmoon/p/13795870.html
Copyright © 2011-2022 走看看