为什么VM线程会降低我的Web应用程序的速度? [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我的Java Web应用程序在一段时间内正在放慢速度。当我检查资源利用率时,我发现java.exe占用的CPU更多。

当我将线程转储分析时,以下线程被突出显示为最高消费者。

VM Thread" prio=10 tid=0x000000001ba2f000 nid=0x3504 runnable

这个帖子的目的是什么?如何以及为什么它会减慢我的申请速度?我该如何逮捕这个?

java performance java-threads thread-dump
1个回答
2
投票

这是一个系统线程;请参阅What does java "VM thread" do?如果耗费大量时间,可能意味着您的JVM正在做很多“停止世界”垃圾收集。

如果您的JVM花费大量时间进行垃圾收集,这通常意味着您的堆已接近满,并且您将接近将导致OutOfMemoryError失败的点。

这种事情有两种可能的原因:

  • 您的堆太小,无法进行您尝试执行的计算。
  • 您的应用程序有内存泄漏。

在前一种情况下,您可以增加堆大小或减小问题大小,也可以修改应用程序以更有效地使用内存。请注意,如果不断增加堆大小,最终必须担心机器中是否有足够的地址空间和物理RAM。

在后一种情况下,您需要查找并修复导致内存泄漏的应用程序上的错误或错误。有很多关于查找和修复Java内存泄漏的文章。

© www.soinside.com 2019 - 2024. All rights reserved.