Tag: 内存泄漏

SQLite Android数据库光标窗口分配2048 kb失败

我有一个例程每秒多次对SQLite数据库运行不同的查询。 过了一段时间,我会得到错误 "android.database.CursorWindowAllocationException: – Cursor window allocation of 2048 kb failed. # Open Cursors = "出现在LogCat中。 我有应用程序日志内存使用情况,实际上,当使用量达到一定的限制,我得到这个错误,意味着它用完了。 我的直觉告诉我,每次运行查询时,数据库引擎都会创build一个新的缓冲区(CursorWindow),即使我标记了.close()游标,垃圾收集器和SQLiteDatabase.releaseMemory()释放记忆。 我认为解决scheme可能在于“迫使”数据库始终写入相同的缓冲区,而不是创build新的数据库,但我一直无法find办法做到这一点。 我试图实例化我自己的CursorWindow,并试图设置它和SQLiteCursor无济于事。 有任何想法吗? 编辑:重新从@GrahamBorland示例代码请求: public static CursorWindow cursorWindow = new CursorWindow("cursorWindow"); public static SQLiteCursor sqlCursor; public static void getItemsVisibleArea(GeoPoint mapCenter, int latSpan, int lonSpan) { query = "SELECT * FROM Items"; //would be more complex in real […]

有没有办法来避免Tomcat的解除部署内存泄漏?

这个问题对于任何曾经testing过Tomcatpipe理器中的“Find leaks”button的人来说都是这样的: 以下Web应用程序已停止(重新加载,取消部署),但其以前运行的类仍然加载到内存中,从而导致内存泄漏(使用分析器进行确认): /漏的应用程序名称 我认为这与您经常重新部署时经常遇到的“Perm Gen空间”错误有关。 所以当我部署的时候我在jconsole中看到的是我的加载类从大约2k到5k。 那么你会认为一个部署会让他们回到2K,但他们仍然在5K。 我也试过使用下面的JVM选项: -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled 我看到使用Perm Gen空间的次数非常less,但不是我所期望的,而且加载的类数没有下降。 那么有没有一种方法来configurationTomcat或devise你的应用程序卸载更好地卸载? 还是我们坚持重新启动服务器后,一些主要的debugging会议? Tomcat版本输出: 服务器版本:Apache Tomcat / 6.0.29 build立的服务器:2010年7月19日1458 服务器号码:6.0.0.29 操作系统名称:Windows 7 操作系统版本:6.1 架构:x86 JVM版本:1.6.0_18-b07 JVM供应商:Sun Microsystems Inc. 更新: 感谢celias的回答,我决定做更多的挖掘工作,我想我已经确定了罪魁祸首是由于CXF,Spring和JAXB。 在学习了如何configurationJava应用程序之后,我将分析器指向了Tomcat,并采取了一些堆转储和快照来查看内存中对象和类的内容。 我发现在我的CXF / JAXB(wsdl2java)生成的类中使用的XML模式中的一些枚举在部署之后仍然存在。 根据我的堆转储它看起来像对象被绑定到一个地图。 免责声明:我承认我仍然有点绿色与分析和追踪对象的调用树可以在Java中具有挑战性。 另外我应该提到,我甚至没有调用服务,只是部署,然后取消部署。 这些对象本身似乎是通过部署时从Spring发起的reflection来加载的。 我相信我遵循了在春季build立CXF服务的惯例。 所以我不是100%确定这是Spring / CXF,JAXB还是reflection的错误。 作为一个方面的说明:有问题的应用程序是使用Spring / CXF的Web服务,而XML恰好是一个相当复杂的模式( NIEM的扩展)。

在Ruby中查找内存泄漏的原因

我在Rails代码中发现了内存泄漏 – 也就是说,我发现了什么代码泄漏,但没有发现泄漏的原因 。 我已经减less到一个不需要Rails的testing用例: require 'csspool' require 'ruby-mass' def report puts 'Memory ' + `ps ax -o pid,rss | grep -E "^[[:space:]]*#{$$}"`.strip.split.map(&:to_i)[1].to_s + 'KB' Mass.print end report # note I do not store the return value here CSSPool::CSS::Document.parse(File.new('/home/jason/big.css')) ObjectSpace.garbage_collect sleep 1 report 据说ruby-mass可以让我看到内存中的所有对象。 CSSPool是一个基于racc的CSSparsing器。 /home/jason/big.css是一个1.5MB的CSS文件 。 这输出: Memory 9264KB ================================================== Objects within [] namespace […]

内存泄漏检测工作原理

内存泄漏检测器如何实际工作? 一般的基本概念是什么? 可以用C ++作为语言来解释这一点。

程序退出时泄漏的内存是否释放?

如果我编程 – 不知道它 – 内存泄漏,应用程序终止,泄漏的内存是否释放?

内存泄漏在C#

是否有可能在托pipe系统泄漏内存,当你确保所有句柄,实现IDispose东西都处置? 会不会有一些变数被遗漏的情况呢?

使用仪器 – 泄漏与设备

我开始在iPhone 3G上使用Instruments-Leaks。 当我尝试运行iPhone上的仪器的应用程序,我获得 Target failed to run: Remote exception encountered: 'Failed to get task for pid 280' 想法? 我唯一一次用乐器运行应用程序成功运行得非常慢,我无法testing它。 在设备上运行应用程序寻找泄漏的步骤是什么?

为什么.NET没有内存泄漏?

忽略不安全的代码,.NET不能有内存泄漏。 我已经从许多专家那里无休止地读到了这一点,我相信这一点。 不过,我不明白为何如此。 我的理解是,框架本身是用C ++编写的,C ++易受内存泄漏的影响。 底层的框架写得如此之好,它绝对不存在内部内存泄漏的可能性? 框架的代码中是否有自我pipe理甚至是治愈自己的内存泄漏? 答案是我还没有考虑的其他答案吗?

如何使用转储文件来诊断内存泄漏?

我有一个正常的私人工作集大约80 MB的.NET服务。 在最近的负载testing期间,进程达到了3.5 GB的内存使用量,导致整个机器在物理内存上很低(使用4 GB的3.9 GB),并且在负载testing停止后很久没有释放内存。 使用任务pipe理器,我拿了一个进程的转储文件,并在Visual Studio 2010 SP1中打开它,我可以开始debugging它。 如何诊断内存问题? 我有我的dotTrace内存3.x,它是否支持转储文件上的内存分析? 如果没有,Visual Studio 2010 Premium的内存分析function将帮助(我目前有专业人士)? WinDbg可以帮忙吗? 更新:新的Visual Studio 2013旗舰版现在可以使用转储文件本机诊断内存问题。 看到这个博客文章的更多细节。

资源泄漏:“in”永远不会closures

为什么Eclipse在下面的代码中给我“永远不会closures”的变暖“资源泄漏:”? public void readShapeData() { Scanner in = new Scanner(System.in); System.out.println("Enter the width of the Rectangle: "); width = in.nextDouble(); System.out.println("Enter the height of the Rectangle: "); height = in.nextDouble();