小强测试技术与人生杂谈软件测试

JVM内存泄露(OOM)!带你一一揭秘【第一弹】

2020-03-24  本文已影响0人  测试帮日记

我们将分成多次介绍内存泄露OOM的内容,大致套路为现象、原因、解决方案。简单清晰,不玩高大上。记得给转发一下,哈哈

OOM最典型的表现:java.lang.OutOfMemoryError,你记住了吗?

1 OOM的现象之一

今天介绍第一种Java heap space

2 什么原因造成的?

1)应用程序尝试添加更多的数据放入堆空间,但没有足够的空间供它,当JVM达到堆大小限制时,都会引发Java堆空间错误

2)数据量激增。当用户数量或数据量突然达到峰值并超过预期阈值时,在峰值之前正常运行的操作将停止运行并触发java.lang.OutOfMemoryError: Java heap space。

3)内存泄漏。不好编程代码错误将导致你的应用程序不断消耗更多的内存。每次都会将某些对象留在Java堆空间中。久而久之,泄漏的对象会消耗所有可用的Java堆空间。

3 怎么解决和避免呢?

1)分配合理的内存给JVM的堆。

2)但是,在许多情况下,提供更多的Java堆空间将无法解决问题。例如,如果应用程序包含内存泄漏,即使添加更多的堆只会推迟错误。此外,增加Java堆空间的数量也往往会增加GC暂停的时间,从而影响应用程序的吞吐量或延迟。

3)如果希望解决Java堆空间的根本问题而不是掩盖症状,则需要弄清楚代码的哪一部分负责分配最多的内存。换句话说,你需要清楚哪些对象占据堆的大部分空间并想办法优化他们

好了,今天就到这里,第二弹明天见面~

上一篇下一篇

猜你喜欢

热点阅读