咱们将分红屡次介绍内存泄露OOM的内容,大体套路为现象、缘由、解决方案。简单清晰,不玩高大上。记得给转发一下,哈哈java
OOM最典型的表现:java.lang.OutOfMemoryError,你记住了吗?编程
1 OOM的现象之一app
今天介绍第一种Java heap spaceide
2 什么缘由形成的?优化
1)应用程序尝试添加更多的数据放入堆空间,但没有足够的空间供它,当JVM达到堆大小限制时,都会引起Java堆空间错误spa
2)数据量激增。当用户数量或数据量忽然达到峰值并超过预期阈值时,在峰值以前正常运行的操做将中止运行并触发java.lang.OutOfMemoryError: Java heap space。orm
3)内存泄漏。很差编程代码错误将致使你的应用程序不断消耗更多的内存。每次都会将某些对象留在Java堆空间中。长此以往,泄漏的对象会消耗全部可用的Java堆空间。对象
3 怎么解决和避免呢?内存
1)分配合理的内存给JVM的堆。ci
2)可是,在许多状况下,提供更多的Java堆空间将没法解决问题。例如,若是应用程序包含内存泄漏,即便添加更多的堆只会推迟错误。此外,增长Java堆空间的数量也每每会增长GC暂停的时间,从而影响应用程序的吞吐量或延迟。
3)若是但愿解决Java堆空间的根本问题而不是掩盖症状,则须要弄清楚代码的哪一部分负责分配最多的内存。换句话说,你须要清楚哪些对象占据堆的大部分空间并想办法优化他们
好了,今天就到这里,第二弹明天见面~