相关疑难解决方法(0)

内存泄漏?为什么java.lang.ref.Finalizer吃了这么多内存

我在我的程序上运行了一个堆转储.当我在内存分析器工具中打开它时,我发现java.lang.ref.Finalizerfor org.logicalcobwebs.proxool.ProxyStatement占用了大量内存.为什么会这样?

截图

java memory finalizer proxool

60
推荐指数
2
解决办法
5万
查看次数

非常奇怪的OutOfMemoryError

一如既往,一个冗长的问题描述.

我们目前正在对我们的产品进行压力测试 - 现在我们面临一个奇怪的问题.一到两个小时后,堆空间开始增长,应用程序稍后会死.

对应用程序进行概要分析会显示大量的Finalizer对象,从而填充堆.好吧,我们认为"可能是一个奇怪的终结器线程减慢"问题,并审查了减少需要最终确定的对象的数量(在这种情况下为JNA本机句柄).反正好主意,减少了成千上万的新物......

接下来的测试显示了相同的模式,仅一个小时后,并没有那么陡峭.这次Finalizers起源于在测试平台中大量使用的FileInput-和FileOutput流.所有资源都已关闭,但终结器不再清理.

我不知道为什么在1或2小时后(没有例外),FinalizerThread似乎突然停止工作.如果我们在一些线程中手动强制执行System.runFinalization(),则分析器会显示清除终结器.立即恢复测试会导致终结器的新堆分配.

FinalizerThread仍在那里,询问jConsole他正在等待.

编辑

首先,使用HeapAnalyzer检查堆没有发现任何新的/奇怪的.HeapAnalyzer有一些不错的功能,但我起初遇到了困难.我使用jProfiler,它附带了很好的堆检测工具,并将继续使用它.

也许我错过了HeapAnalyzer中的一些杀手级功能?

其次,今天我们使用调试连接而不是分析器来设置测试 - 系统现在稳定了近5个小时.这似乎是一个非常奇怪的组合,包括太多的终结器(在第一次审查中已经减少),分析器和VM GC策略.由于目前一切运行良好,没有真正的见解......

感谢您到目前为止的输入 - 也许您保持关注和感兴趣(现在您可能有更多理由相信我们不会谈论简单的编程错误).

java out-of-memory finalizer

12
推荐指数
1
解决办法
1516
查看次数

Android EditText内存泄漏

很多人注意到活动中的EditText即使一旦完成就会持有对活动的强引用.要清楚这个EditText在布局中并且已经膨胀,没有设置监听器.这仅发生在某些设备上,例如Samsung Galaxy S4(Android 4.2.2)和其他设备.很多帖子都说没有解决方案.首先是一些有用的帖子.(最终GC会清除它,所以它在技术上不是泄漏,但对于重型内存应用程序,它需要很长时间并将导致OOM)

在EditText中Android三星内存泄漏

为什么EditText在Ice Cream Sandwich中保留其Activity的Context

EditText导致内存泄漏

未处理的内存泄漏的可能性

所提到的解决方案并不适用于所有设备.它归结为Edittext Watcher.我认为可能有一个解决方案来覆盖这个Watcher然后有一个函数来清理onDestroy().请帮忙,我已经好几天了.

这是MAT直方图

内存泄漏

android memory-leaks android-edittext android-textattributes

6
推荐指数
1
解决办法
3687
查看次数