如何禁用 Java 垃圾回收器?

2022-09-01 04:05:04

我们有一个PHP webapp,它调用Java二进制文件来生成PDF报告(使用JasperReports)。Java二进制文件将PDF输出到标准输出并退出;然后,PHP 将 PDF 发送到浏览器。这个Java命令持续大约3到6秒,我认为当它持续6秒时,这是因为GC启动。我想禁用GC,因为无论如何,当命令退出时,将返回所有内存。

我想知道如何在Java 1.4.2和Java 1.6.0中禁用它,因为我们目前正在测试这两个JVM,看看哪个执行得更快。


答案 1

这听起来像是你试图节省时间,但以错误的方式去做。与启动和关闭 java 进程所花费的时间相比,禁用垃圾回收所节省的时间(对于单个任务)将是微不足道的。您可能希望考虑启动 Java 进程,如果运行时性能是您的目标,则可以多次要求该进程执行所需的工作。


答案 2

无法完全禁用垃圾回收。垃圾回收仅在 JVM 空间不足时运行,因此您可以为程序提供更多内存。将这些命令行选项添加到 Java 命令

-Xmx256M -Xms256M

这为程序提供了256Mb的RAM(默认值为64Mb)。对于默认大小的JVM,垃圾回收不会花费3秒,因此您可能需要更仔细地调查程序正在执行的操作。Yourkit分析器对于弄清楚需要很长时间的内容非常有用。


推荐