限制java应用程序的内存和CPU使用率

dem*_*002 10 java performance memory-management cpu-usage

说,"运行myApp.jar,cpu = 800,内存= 1024"

我已经做了多年的java编程,问这个问题是一个尴尬.我甚至不知道这是否可能.如果是这样,怎么样?

我只想知道是否可以设置java程序的最大内存和CPU使用率.我突然想到了这一点,因为我最近开始开发移动应用程序.我想知道应用程序在具有非常有限的内存和处理器的设备上的行为.

我看到物理引擎带有在浏览器上运行的演示应用程序,或者我可以在我的PC上执行.如果我在移动设备上运行它会怎么样?性能是否相同?我不是开发一个示例移动应用程序来测试库的性能,而是首先使用我的PC运行特定的cpu和内存.

顺便说一下,我试着谷歌搜索...我发现只是监控和性能调整.我可能使用错误的关键字.

bes*_*sss 11

您可以通过-Xmx选项限制内存使用量,并且可以通过设置进程的优先级和/或CPU关联来限制CPU使用率.

  • 在linux上,你可以使用`taskset(1)`运行具有指定CPU亲和性的JVM,这对许多人来说并不明显.无法通过普通JVM设置CPU亲和性.(你可以做JNI魔法,但可以做龙.) (3认同)

Dud*_*Boy 7

JVM 无法控制 CPU 使用率或优先级。

JVM 可以控制最大/最小内存使用量。

有一个解决方法。可以在单独的 [Docker 容器][1] 中运行每个 JVM。并控制每个容器的资源(Memory、CPU、Network、IO)分配。这正是 Docker 容器的附加价值。

[1]:JVM 无法控制 CPU 使用率和优先级。但是,您可以在单独的 Docker 容器中运行每个 JVM。并控制每个容器的资源分配。这正是 Docker 容器的附加价值。


Mr.*_*. B 5

Linux:

taskset -a -c 0,1,2,3 <program>

仅在核心 0、1、2 和 3 上运行程序及其子线程。