java OOM

除了程序计数器外, 虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError( 下文称OOM) 异常的可能。

1.Java堆溢出
Java堆用于存储对象实例, 只要不断地创建对象, 并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制清除这些对象, 那么在对象数量到达最大堆的容量限制后就会产生内存溢出常。

-Xms 

-Xmx

内存泄漏( Memory Leak) 内存溢出( MemoryOverflow)

内存泄露和内存溢出的区别_LYC1439997881的博客-CSDN博客_内存泄漏和内存溢出有什么区别

2. 虚拟机栈和本地方法栈溢出

如果线程请求的栈深度大于虚拟机所允许的最大深度, 将抛出StackOverflowError异常。
如果虚拟机在扩展栈时无法申请到足够的内存空间, 则抛出OutOfMemoryError异常。

-Xss

3. 方法区和运行时常量池溢出

程序使用了CGLib字节码增强和动态语言,大量JSP或动态产生JSP文件的应用( JSP第一次运行时需要编译为Java类), 基于OSGi的应用( 即使是同一个类文件, 被不同的加载器加载也会视为不同的类) 等。

-XX: PermSize

-XX: MaxPermSize

4. 本机直接内存溢出
-XX: MaxDirectMemorySize
 

你可能感兴趣的:(java,java,jvm,开发语言)