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

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

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

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

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

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

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

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

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

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

在这种情况下,在移动模拟器(例如Android)上运行应用程序可能会有所帮助。

有了这个,您可以模拟具有特定CPU /内存的移动设备。 因此,您应该获得性能,这与具有较慢CPU和较低RAM的设备相当。

Android / Nokia模拟器是免费的,可从诺基亚/谷歌网站的开发者部分下载。

https://github.com/haosdent/jcgroup jcgroup是您的最佳选择。 您可以使用此库来限制CPU份额,磁盘I / O速度,网络带宽等。

对于CPU,你可以尝试我的新lib :)。

https://github.com/dyorgio/cpu-watcher

使用示例:

 // Limit process by PID to 25% of host cpu usage CpuWatcher cpuWatcher = new CpuWatcher(pid, 25f); cpuWatcher.start();