既然你已经知道你的程序有内存泄漏,那么当泄漏成为问题时,你可以使用这些工具来帮助修复泄漏——最好是在泄漏成为问题之前。很多人都选择参加java培训来获得更全面的学习,有专业老师教学指导,理论知识+实战项目一起学习,可以快速提升自己。
使用可以检测内存泄漏的工具
对于我们的下一个例子,我们将使用VisualVM。
下载并配置VisualVM后,通过运行附加了VisualVM的应用程序来分析你的代码。当执行降低应用程序速度的任务时,VisualVM会查看“监视器”和“内存池”选项卡。你需要注意什么?当你在Monitor选项卡中看到内存使用高峰时,按下“Perform GC”按钮,这将激活垃圾收集。这应该有助于减少使用的内存量。
如果这不起作用,切换到“内存池”并查看旧的Gen部分。如果有物体泄漏,你会在这里看到。请记住,活动对象被放置在“伊甸园”,然后将被移动到“幸存者”。同时,在“老一代”池中发现较老的对象。
在这一点上,你可以回到你的代码并注释掉不相关的部分,直到你注意到有性能下降或停止的地方。重复所有这些步骤,直到消除所有泄漏。如果你正在考虑如何快速学习java,那么参加java培训掌握更全面的知识和技能将是一个很好的开始。
启用代码的某些部分来检查内存使用情况,如果你发现另一个泄漏,进入导致这些泄漏的方法来帮助堵塞它。继续缩小范围,直到只剩下一个类或方法。验证所有文件缓冲区,看它们是否关闭。另外,检查所有的散列表,看看你是否正确地使用了它们。
使用堆转储
如果你觉得上面提到的方法太单调乏味,你可以通过使用堆转储来减少修复内存泄漏所花费的时间。堆转储允许你查看打开的实例数量以及这些实例占用了多少空间。如果你想进一步调查某个特定的实例,只需双击该特定的实例就可以看到更多信息。堆转储帮助你了解应用程序生成了多少对象。在java培训中,无论是理论知识,还是实战项目,都是紧跟市场和企业需求的,让你掌握最新技术,走在市场前沿。
使用Eclipse内存泄漏警告
另一种节省时间的方法是依靠Eclipse内存泄漏警告。如果你有符合JDK 1.5或更高版本的代码,你可以使用Eclipse在引用结束但对象持续存在且未关闭时发出警告。请确保在项目设置中启用泄漏检测。
请注意,使用Eclipse可能不是一个全面的解决方案。Eclipse不能检测所有的泄漏,可能会遗漏一些文件闭包,尤其是当你的代码不符合JDK 1.5(或更高版本)时。Eclipse不总是工作的另一个原因是因为这些文件的关闭和打开嵌套得非常深。
总结
内存泄漏当然是Java开发人员的一个担忧,但它们并不总是世界末日。用专业知识武装自己,在问题发生之前就加以预防,并在问题出现时加以解决。想学习java的同学建议通过参加java培训来提升自己,在专业老师的指导下,可以获得很大进步。