启动Java程序实例,每个实例都在一个独立的核心上

时间:2011-03-22 14:58:39

标签: java

我有一个Java程序,我在Windows Server 2008上就是这样开始的。

java -cp "C:\Program Files\Java\jdk1.6.0_23\jre\lib\ext\*" -server -Xms128m -Xmx512m    something.something.Main config.xml

它已经运行很久了,我希望能够启动两个或更多实例,我想知道是否有办法指定CPU / Core以获得更好的性能。

3 个答案:

答案 0 :(得分:2)

我不知道如何将Java程序的实例附加到特定的CPU /核心。作为替代方案,考虑使程序并发,即在内部启动多个执行程序线程。这样,您只需要运行它的单个实例,但如果有多个可用的线程,则其各个线程将在不同的处理器/核心上运行。

实际上这可能会产生更好的性能并且比运行多个进程更具可扩展性 - Executor框架允许您选择不同的线程池,甚至动态更改线程数,为您管理死线程等。< / p>

答案 1 :(得分:2)

您无需启动新虚拟机即可获得更好的性能,您可以使用多线程在同一进程中使用所有可用内核。事实上,这将在两个不同的过程中表现得更好。

但是如果你想要开始两个不同的过程,那就去做吧;操作系统将为您完成剩下的工作。

检查此link以获取有关Java进程和线程的更多信息。

答案 2 :(得分:1)

通常您不应该担心 - 您的操作系统会将正在运行的进程分发到可用的核心/处理器。