2012-05-07 98 views
15

有沒有辦法限制java使用的核心數量?Java限制資源使用情況

並且在同樣的情況下,是否有可能限制使用該內核的數量?

+0

不是從java端,操作系統將線程分配給核心。來自VMWare的一些非常昂貴的軟件是我個人熟悉的唯一解決方案:) – Affe

+1

http://stackoverflow.com/questions/8882885/is-it-possible-to-force-an-existing-java-application-to -use-no-more-x-cores – rolve

+1

[Limiting java application's memory and cpu usage]可能的重複(http://stackoverflow.com/questions/4952528/limiting-java-applications-memory-and-cpu-用法) – Abizern

回答

5

你可以在linux上使用taskset。您還可以降低進程的優先級,但除非CPU(S)忙,否則進程將獲得儘可能多的CPU。

我有一個專用於線程的庫,稱爲Java Thread Affinity,但它可能與您的想法有不同的目的。你能澄清你爲什麼要這麼做嗎?

+0

我爲學校項目創建了一個分佈式處理網格,其中一個要求是能夠限制資源使用情況。 – rynojvr

+0

最簡單的做法是以非常低的優先級啓動進程。例如'nice -n 20'這意味着它只會使用「免費」的CPU。這不會限制內存(您可以使用最大堆大小)或磁盤或網絡IO(如果需要,您必須編寫代碼),但它將完成大部分所需內容。 –

3

我不認爲有內置的JVM選項來做這些調整,但是您可以通過設置JVM進程的優先級和/或CPU關聯來限制CPU使用率。 如果你在Linux上看看CPULimit這是一個很棒的工具來做這些資源限制。

+0

這種無處不在的便攜式語言的主要缺點;我不敢相信這至少沒有被「java霸主」公司所解決。 –