闲置之后的JVM JIT消除了临时化



我主要用于编写宠物项目,大多数情况下都是空闲的。在闲置几个小时/天响应时间后,响应时间增加到秒(最多10秒(,然后慢慢减少到200-300ms。

据我了解,

发生这种情况是由于JIT DeOptimization(优化代码被标记为僵尸,被删除,然后再次编译(。

除非代码缓存已满,否则有什么办法禁止JVM消除代码?Java 9的AOT看起来像是这种情况的最佳解决方案,但我仍然没有设法使其正常工作。

upd:一如既往,正确的解决方案是显而易见的解决方案。看起来这个问题实际上是由交换引起的。尽管有12 GB的RAM,其中6个是免费的,但一段时间后,大约100 MB的每个JVM的内存都换成了HDD。

尽管如此, @apangin的答案对于遇到同一情况的其他人来说可能很有用,所以我在这里留下这个问题。谢谢所有!

-XX:-UseCodeCacheFlushing完全禁用清理编译的方法。

尽管此是给定问题的答案,但我非常怀疑这将解决您的原始问题。

当应用程序闲置时,nmethod扫地机也会闲置。 so 也不太可能慢一点,因此需要数十秒钟的时间(重新(编译。冲洗文件缓存,陈旧的网络连接等更可能是导致这种放缓的原因。

相关内容

  • 没有找到相关文章

最新更新