2011-02-10 244 views
8

说,“跑与CPU = 800和内存myApp.jar = 1024”限制Java应用程序的内存和CPU使用率

我一直都在做Java编程多年,它是一个embarrasment问这个问题。我甚至不知道这是否可能。如果是这样,怎么样?

我只是想知道的是,如果有可能设置一个Java程序的最大内存和CPU使用率。我突然想到了这个,因为我最近开始开发移动应用程序。我想知道应用程序在具有非常有限的内存和处理器的设备上的表现如何。

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

我试着用Google搜索...所有我发现的是监视和性能调整。我可能会使用错误的关键字。

回答

8

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

+0

谢谢bestsss。我会尝试。 – demotics2002

+2

在linux上,您可以使用'taskset(1)'运行具有指定CPU亲和力的JVM,这对很多人来说都不是很明显。无法通过普通的JVM设置CPU关联性。 (你可以做JNI的魔法,但可以是龙。) – andersoj

+0

是的,你不能通过标准的Java选项设置亲和力和处理器优先级,我知道...在Windows上,你需要的命令是启动(在32位Windows上它不会启动虽然没有亲和力选项,但是) – bestsss

1

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

使用此功能,您可以模拟具有特定CPU /内存的移动设备。所以,你应该获得性能,这与具有较慢CPU和较少RAM的设备相当。

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

1

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

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

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