如何禁用 Java 垃圾收集器?

新手上路,请多包涵

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

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

原文由 Nelson 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 422
2 个回答

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

-Xmx256M -Xms256M

这为程序提供了 256Mb 的 ram(默认值为 64Mb)。不过,对于默认大小的 JVM,垃圾收集不会花费 3 秒,因此您可能想要更仔细地调查程序在做什么。 Yourkit 分析器 对于找出花费很长时间的内容非常有用。

原文由 Ceilingfish 发布,翻译遵循 CC BY-SA 3.0 许可协议

听起来你是想节省时间,但方法不对。与启动和关闭 Java 进程所花费的时间相比,禁用垃圾收集所节省的时间(对于单个任务)是微不足道的。如果运行时性能是您的目标,您可能需要考虑启动一个 Java 进程,您可以多次请求它来完成您需要的工作。

原文由 Paul Jowett 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题