最近我正在编写一些微基准测试代码,因此我必须将JVM的行为与我的基准信息一起打印出来。 我使用
-XX:+PrintCompilation
-XX:+PrintGCDetails
除了其他获取JVM状态的选项外,我可以简单使用System.out.print()
方法来获取基准信息。因为我需要知道打印消息的顺序和JVM输出。
当我只是在控制台中将它们打印出来时,我可以得到很好的结果,虽然JVM输出有时会打乱我的消息,但由于它们在不同的线程中,这是可以理解和接受的。
当我需要进行批量基准测试时,我想通过将输出重定向到文件
,并使用管道(在Linux系统中为>
)来从文件中获取结果并分析它们。
问题是:
JVM输出总是与我在Java应用程序中打印的消息重叠。
它破坏了消息的完成度。
有什么办法处理这种情况吗?我需要在同一个地方保留JVM输出和应用程序输出,以保留顺序,因为这很重要。同时它们不相互重叠,这样我就不会失去任何东西。