我有一个Java应用程序作为Windows服务应用程序的后台进程运行。
发出控制台输出语句(例如System.out.println
)时,该输出存储在何处。它是存储在Windows存储中还是保留在JVM堆存储中?
答案 0 :(得分:1)
已找到答案。
第三方库的方法在创建客户Appender
时没有关闭log4j日志记录的控制台输出。有两种方法可以实现这一点,其中只有一种方法可以正常运行。
我切换到第二种方法,并在创建自定义Appender
时停止控制台消息。我重新完成了18小时后失败的工作。现在,它是在3.5天(84小时),仍然很强劲。
因此,可以确定如果没有进程将采用控制台输出(System.out
),那么这些输出消息将由JVM存储在堆存储中。最终,JVM堆存储将耗尽,应用程序将崩溃。