【问题标题】:Visualvm thread started countVisualvm 线程开始计数
【发布时间】:2015-09-02 04:03:26
【问题描述】:

我正在监视一个 java 应用程序的线程锁定场景,

在监控选项卡下的visualvm中,

直播话题:112 直播高峰:126 守护线程:99 开始总数:135,742

这是什么意思?我觉得有这么多的总启动线程数是不对的。线程创建是否有最佳数量? 我是 Java 编程新手。请帮忙

【问题讨论】:

  • VM 运行了多长时间,应用程序有哪些用途?当然,不可能有任何 最佳 启动线程数。当应用程序可以做不同的事情时,怎么可能呢?
  • @Kayaman 虚拟机运行了大约 15 小时。应用程序确实读取文件并将其存储在 DB 中。问题是当应用程序运行时 linux 资源不足,甚至没有打开终端。因此,猜测 linux 可能会用完最大线程数,并且不会进一步创建进程。但是重启系统有帮助。
  • 嗯,对于当时这样的应用程序来说,这似乎很高(每分钟启动约 150 个线程)。但这只是启动线程总数的数字,您可以看到最多同时有 126 个活动线程,这不是问题。

标签: java multithreading profiling visualvm


【解决方案1】:

确保您的程序正在使用 ThreadPool,这将有效利用线程。

总线程数是自 JVM 启动后启动的线程数。启动的活动线程(峰值)是 126 个线程,所以这看起来很正常,当前活动线程数是 112,这包括所有线程守护程序/非守护程序线程不仅由您的程序启动,还由 JVM 启动。

每个计数是什么意思:

活动线程:显示当前活动/活动线程的数量,包括守护线程和非守护线程(当前正在运行)。

Live Peak:这给出了自 Java 虚拟机启动或峰值重置以来活动线程的峰值计数。

守护线程:这给出了当前活动守护线程的数量。

Total Threads:这给出了自 Java 虚拟机启动以来创建和启动的线程总数。

【讨论】:

    猜你喜欢
    • 2015-02-08
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    相关资源
    最近更新 更多