【问题标题】:Java applet may be using up too much memoryJava 小程序可能占用了太多内存
【发布时间】:2012-06-22 02:10:03
【问题描述】:

我遇到了一个 Java 小程序在多次打开后挂起的情况。这只发生在 RAM 较低的系统上,这让我相信可能存在内存泄漏,或者只是分配给堆的内存不足。

如何测试小程序的内存泄漏?像 JProbe 这样的东西会起作用吗?

【问题讨论】:

  • 如果您使用的是最新版本的 Java,请使用 VisualVM - 它应该已经是 JDK 的一部分。您可以使用它跟踪内存泄漏等。
  • 我听从了您的建议并使用了VisualVM ...问题是小程序在多次关闭和打开后会出现问题。所以我不确定如何跟踪它在运行之间锁定的任何资源。
  • 您的小程序是否使用了一些 DLL 等?

标签: java memory applet memory-leaks


【解决方案1】:

我认为特定工作站上的低内存不是问题。

如果没有另外指定(使用-Xmx 设置),Java 小程序会在开始时获得64MB 的内存。 JVM一开始就从系统中保留了这么多的 RAM,因此如果系统可用的内存较少,则 JVM(以及 Applet)甚至都不会启动。

但如果它启动,则保证所有配置的内存都可用。 因此,如果您的 Applet 仍然缺少内存,则有两种可能:

  1. 默认设置 (64MB) 是低 - 配置您的小程序以获得更多 RAM。
  2. 您没有正确释放资源,并泄漏内存。查看您的小程序的lifecycle methods,并检查您是否按照应有的方式释放资源。

另外,你说最后,你的小程序挂起。要查看发生了什么,请将一些日志记录添加到 生命周期方法enable Java Console,并查找异常情况。

【讨论】:

  • 谢谢。我怎样才能完成(1)?
  • hereherehere
  • 这些解决方案需要修改代码。目前,这是我想避免的。通过控制面板添加 -Xmx 和 -Xms 会起作用吗?
  • 是的,在 Java 控制面板中使用 -Xmx 设置是其中一种选择。
猜你喜欢
  • 2011-09-20
  • 1970-01-01
  • 1970-01-01
  • 2017-09-01
  • 2019-11-12
  • 1970-01-01
  • 2017-04-14
  • 2013-01-10
  • 2014-02-19
相关资源
最近更新 更多