1

我有一个JFrame和一个JTabbedPane

有s,每个JTabbedPane都有一个。JPanelJPanelApplet

如果我加载小程序,然后关闭它,CPU 使用率会下降,但 RAM 使用率仍然很高。因此,为了让我正确释放 RAM,每个JPanel/Applet都必须有自己的 JVM,我可以终止它。的代码Applet不是我的,但这就是它的制作方式,简单地破坏它是行不通的。

所以我要问的是,JPanel当我添加一个新的 JVM 时,如何为每个附加一个新的 JVM?

4

2 回答 2

1

为了实现这一点,您需要有一个包装应用程序,能够在每次您想要打开您的 JPanel/Applet 事物时启动一个新的 JVM 实例(分叉一个新进程)。您可以通过调用Runtime.exec()和调用 JVM 的新实例来做到这一点,但老实说,所有这些对我来说都有点异味。JVM 确实不是为此而设计的,我认为更有可能是您在某个地方出现了未正确处理的内存泄漏。

于 2013-06-27T19:49:49.123 回答
0

我认为您不能为任何给定的应用程序运行超过 1 个 JVM 实例,如Runtime Class所述

但是,我相信如果您在关闭每个 Applet 时删除所有对它的引用,您可以调用 System.gc() 来清理内存,以便您可以将它用于该 Java 应用程序中的其他内容。但是,请记住,您的 RAM 使用率不会下降,因为 JVM 堆是在启动时分配的,据我所知,在执行期间无法调整大小。有关其工作原理的信息,请参阅JVM 选项:Xmx 分配

于 2013-06-27T19:46:14.177 回答