其实内存溢出和内存泄漏还真不是一回事儿!

内存溢出和内存泄漏的区别

  • 内存溢出(Out Of Memory) :就是申请内存时,JVM没有足够的内存空间。一个通俗的例子就是去厕所时发现坑位满了。
  • 内存泄露 (Memory Leak):就是申请了内存,但是没有释放,导致内存空间浪费。一个通俗的例子就是就是有人占着茅坑不拉屎。
  • 一句话总结内存泄漏和内存溢出的关系:内存泄露的增多,最终会导致内存溢出。

JVM中的StackOverflowError和OutOfMemoryError

话不多说,一张好图胜过一千行文字,我们上图!

其实内存溢出和内存泄漏还真不是一回事儿!_第1张图片

StackOverflowError:线程请求的栈深度大于虚拟机所允许的深度,抛出该异常。

堆内存溢出OutOfMemoryError,如果堆中没有内存完成实例分配,并且堆也无法再扩展时,抛出该异常。

元空间内存溢出OutOfMemoryError,这个错误的原因大概率是加载到内存中的 class 占用的内存超过了 Metaspace 的限制,抛出该异常。

我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!

你可能感兴趣的:(测试开发,Java,java,jvm)