标签:native 空间 asp 变化 kernel 信息 ring 情况 保存
使用Java那么久,在此总结一下Java中常见的内存溢出问题以及对应的解决思路
java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError:GC overhead limit exceeded
垃圾回收器超过98%的时间用来做垃圾回收,但回收了不到2%的堆内存。
java.lang.OutOfMemoryError: PermGen space 或者
java.lang.OutOfMemoryError: Metaspace(Java8及以上)
永久代是 HotSot 虚拟机对 方法区的具体实现,存放了已被虚拟机加载的类信息、常量、静态变量、JIT编译后的代码等。需要注意的是,在Java8后,永久代有了一个新名字:元空间,元空间使用的是本地内存。永久代里存在的信息也有了若干变化:
出现永久代或元空间的溢出的原因可能有如下几种:
永久代/元空间 溢出的原因比较简单,解决方法有如下几种:
java.lang.OutOfMemoryError : unable to create new native Thread
虚拟机在拓展栈空间时,无法申请到足够的内存空间。一般出现在内存空间过小,但是又创建了大量的线程的场景。
java.lang.OutOfMemoryError: Requested array size exceeds VM limit
这种情况一般是由于不合理的数组分配请求导致的,消除代码逻辑错误或者调整堆大小。
java.lang.OutOfMemoryError: Out of swap space
这种情况一般是操作系统导致的,可能的原因有:
java.lang.OutOfMemoryError: stack_trace_with_native_method
这种情况表明,本地方法在运行时出现了内存分配失败。和java.lang.OutOfMemoryError : unable to create new native Thread 保存不同,方法栈溢出出现在 JVM 的代码层面,而本地方法溢出发生在JNI代码或本地方法处。
标签:native 空间 asp 变化 kernel 信息 ring 情况 保存
原文地址:https://www.cnblogs.com/qlqwjy/p/9175516.html