我需要知道在我在进程终止之前,eclipse是否可以向log或console输出值。
假设我有一种方法可以做到这一点:
long cnt = 0;
while(true)
{
cnt ++;
}
我会点击运行它会增加它然后我会点击[在eclipse运行选项中]终止程序。在它退出之前我想让eclipse输出/记录cnt的值。
如果没有可用的至少eclipse可以记录/输出值说每分钟或几秒..所以最后我只会在一分钟范围内的值。
我正在尝试对某些内容进行基准测试,并且我想知道在运行测试之前我的硬件速度有多快。因此,我不希望程序中的任何条件语句等减慢速度。
任何指针?
由于
答案 0 :(得分:1)
不,当JVM终止时,您无法打印任何值。
为了经常打印价值,您可以添加以下内容:
long l = System.currentTimeMillis();
long cnt = 0;
while (true) {
cnt++;
if((System.currentTimeMillis()-l) > 2000L) {
l = System.currentTimeMillis();
System.err.println(cnt);
}
}
答案 1 :(得分:0)
实现这一目标的一种方法 - 与Eclipse实际上没有多大关系 - 是在代码的运行时添加ShutdownHook
(link)。关闭钩子的基本目的是为应用程序提供一种机制,以便在JVM退出时执行一些清理操作。
但是,事先警告您,这不是一种强烈推荐的做事方式,但只应用于执行低风险操作,这不会影响应用程序再次启动时的整体神圣性。这是因为无法保证操作系统允许JVM进程退出多长时间。
在你的情况下,我认为你可以继续使用它,因为打印变量的值不应该花费太多时间。
答案 2 :(得分:0)
Eclipse在点击大红色终止按钮时不会调用shutdownHooks: https://bugs.eclipse.org/bugs/show_bug.cgi?id=38016
设计代码不需要关闭钩子,如果它是一个问题。