在我的应用程序中,某些部分需要在给定的时间内执行(通常以分钟为单位)。由于该应用程序使用大量内存,因此我发现在某些情况下可以通过运行垃圾收集器来减少给定时间(有时需要很长时间)。是否可以读取给定时间段内垃圾回收器花费的时间,以便我对此做出反应并给我的代码更多执行时间?
我已经尝试过g1垃圾收集器,但是我注意到一些jvm崩溃。吞吐量对于我来说很重要,因此我需要知道何时调用垃圾收集器,这会使应用程序停止一段时间。
所以我想知道在执行期间何时调用GC。
答案 0 :(得分:1)
-Xloggc:gc.log
-XX:+PrintGCDetails
-XX:+PrintGCApplicationStoppedTime
-XX:+PrintGCApplicationConcurrentTime
将这些JVM标志添加到您的应用程序中。
PrintGCApplicationStoppedTime
显示在安全点停止应用程序的时间。尽管有other reasons,但大多数情况下都是由GC“停止世界”引起的。
PrintGCApplicationConcurrentTime
是应用程序不停止工作的时间
注意:Java 6尚不支持GC1
,因此您没有添加它的价值。