有人知道 PrintGCDetails 是否对 Java 性能有很大影响吗?我一直在使用与生产服务器相同的设置监视临时服务器上的 Java 垃圾收集。
我认为可以肯定地说我不应该在生产中启用此功能,但我不知道这是否真的会对性能产生影响。
答案1
您绝对应该在生产服务器中启用垃圾收集日志记录。其好处远远超过可忽略的性能影响。
您还可以监控 GC 行为使用其他方法(参见答案)。
答案2
根据您的 Java 应用程序将多少日志记录到磁盘,请务必小心,不要开始看到由于磁盘 IO 而导致的性能问题,我已经看到这种情况发生在几个不同的 Java 应用程序中,其中系统运行良好,直到它在执行日志记录时陷入停滞。
可能值得研究使用 jmx 来查询系统如何运行或在 JVM 中启用 SNMP(我已经测试过这个但没有在生产中使用它所以请小心使用并事先进行一些测试。)
答案3
最坏的情况是,它对性能的影响很小。这取决于您的应用程序的行为方式。如果它需要垃圾收集器更频繁地运行,那么它将输出更多的日志信息。记录它的行为实际上并不需要太多时间,但它会用大量额外信息填满您的日志文件。