sách gpt4 ăn đã đi

java - 如何在不破坏应用程序输出的情况下重定向 JVM 输出?

In lại Tác giả: IT Lão Cao 更新时间:2023-10-28 21:01:47 25 4
mua khóa gpt4 giày nike

最近我正在编写一些微基准代码,所以我必须打印出 JVM 行为以及我的基准信息。我用

-XX:+PrintCompilation
-XX:+PrintGCDetails

和其他获取 JVM 状态的选项。对于基准信息,我只是使用 System.out.print() 方法。因为我需要知道我打印的消息的顺序和JVM的输出。

我只是在控制台打印出来就可以得到很好的结果,虽然JVM输出有时会撕掉我的消息,但由于它们在不同的线程中,这是可以理解和接受的。

当我需要做一些批处理基准测试时,我想将输出重定向到一个文件中管道( > 在Linux系统中),并使用python从文件中获取结果并进行分析。

问题来了:

JVM 输出总是与我在 Java 应用程序中打印的消息重叠。它破坏了消息的完成。

知道如何处理这种情况吗?我需要 JVM 输出和应用程序输出都在同一个位置,以便保留序列,因为它很重要。而且它们不会相互重叠,所以我不会丢失任何东西。

câu trả lời hay nhất

我建议绕道而行,看看使用 Java Instrumentation API - 使用(编写)一个简单的 Java 代理 来执行此操作。从您的基准测试的角度来看,这也会给您更多的权力。您可以使用 Java 代理记录所有内容(因此不同的记录器线程之间不会发生争用)。

您可以在 http://www.javabeat.net/2012/06/introduction-to-java-agents/ 上阅读更多信息或 http://today.java.net/pub/a/today/2008/04/24/add-logging-at-class-load-time-with-instrumentation.html

关于java - 如何在不破坏应用程序输出的情况下重定向 JVM 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13436520/

25 4 0
Cựu chiến binh CNTT
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress