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

假设“运行 myApp.jar cpu=800,memory=1024”

我做Java编程已经很多年了,问这个问题是一种尴尬。我甚至不知道这是否可能。如果是这样,如何?

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

我看到物理引擎带有在浏览器上运行的演示应用程序,或者我可以在PC上执行。如果我在移动设备上运行它们怎么办?性能会一样吗?与其开发一个示例移动应用程序来测试库的性能,我宁愿先使用我的PC使用特定的CPU和内存运行它。

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


答案 1

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


答案 2

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

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

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

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


推荐