对OOM了解多少

参考答案

除了程序计数器,其他内存区域都有 OOM 的风险:

  • 一般经常会发生 StackOverflowError。栈发生 OOM 的场景,例如 32 位的 windows 系统单进程限制 2G 内存,无限创建线程就会发生栈的 OOM。
  • Java 8 常量池移到中,溢出会出 java.lang.OutOfMemoryError: Java heap space,设置最大元空间大小参数无效。
  • 堆内存溢出,报错同上,这种比较好理解,GC 之后无法在堆中申请内存创建对象就会报错。
  • 方法区 OOM,经常会遇到的是动态生成大量的类、jsp 等。
  • 直接内存 OOM,涉及到 -XX:MaxDirectMemorySize 参数和 Unsafe 对象对内存的申请。

 

以上,是JVM面试题【对OOM了解多少】的参考答案。

输出,是最好的学习方法

欢迎在评论区留下你的问题、笔记或知识点补充~

—end—

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧