【发布时间】:2016-05-20 12:38:18
【问题描述】:
我有一个循环,其中包含 701 次类似复杂计算的迭代。我测量了三次运行的每次迭代的执行时间。正如你在图表中看到的那样,我得到了奇怪的峰值。是否有任何通用方法能够在不分析循环内代码的情况下解释这些峰值。 Execution Time
gc 是否有可能从这些点开始并减慢其他部分的速度?
【问题讨论】:
-
视情况而定。如果您不想分析循环内的代码,则必须分析执行期间的内存使用情况。
-
此外,JIT 编译器很可能会启动并热编译代码。欲了解更多信息,您可能需要阅读this question about micro-benchmarks。
-
我还没有时间关注你的链接,但我跟踪了使用的内存
((Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory())/1000000) -
在持续时间达到峰值时,gc 似乎完成了他的工作:frameNo:77,帧写入时间:34.94403,内存使用量:687mb frameNo:78,帧写入时间:724.741449,内存使用量:107mb
-
@BastianHermann 是的,这似乎是一个完整的 gc。如果您想了解更多信息,请使用日志...Luke... ;)
标签: java performance time garbage-collection execution