gpt4 book ai didi

java - 从 Java 内部 throttle CPU

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:48:54 26 4
gpt4 key购买 nike

我在这个(和其他)论坛上看到过许多标题相同的问题,但似乎没有一个能准确解决我的问题。就是这个:我有一个 JVM,它占用了托管它的机器上的所有 CPU。我想限制它,但是我不能依赖 Java 外部 的任何限制工具/技术,因为我无法假设此 Vm 将在何处运行。因此,举例来说,我不能使用处理器关联,因为如果 VM 在 Mac 上运行,操作系统将不会使进程关联可用。

我需要的是指示 Java 中是否存在确保线程不会占用全部 CPU 的方法。

我想直截了本地指出,我不能像一些论坛中建议的那样使用基于交替执行和暂停的技术,因为线程需要连续生成值。

理想情况下,我想要一些方法,例如,设置一些 VM 或线程优先级,或者以某种方式限制 CPU 消耗的百分比。

如有任何帮助,我们将不胜感激。

最佳答案

What I would need is an indication as to whether means exist within Java to ensure the thread does not take the full CPU.

除了调整您的应用程序以使用更少的 CPU 外,据我所知,没有其他方法可以在 Java 中执行此操作。

  • 您可以在计算方法中加入一些Thread.sleep(...); 调用。探查器会帮助您展示热循环/方法/等等。
  • fork 更少的线程也会影响使用的 CPU。转向固定大小的线程池或减少池中的线程数。
  • 问题可能不是 CPU,而是其他资源。例如,观察您的 IO 带宽。降低网络或磁盘读/写速度可能会使您的服务器恢复正常运行。

在 JVM 之外,您可以使用 ~unix nice 命令来影响正在运行的 JVM 的优先级,使其不支配系统。如果可用,这将为其提供 CPU,但会让其他应用程序获得更多 CPU。

关于java - 从 Java 内部 throttle CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12302196/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com