2010-01-29 68 views
5

在Windows和Linux(Debian)下運行相同的Java進程(一個jar)時,Linux進程使用更多(12MB vs 36 MB),只是從啓動開始。即使試圖用-Xmx/Xms/etc限制堆大小,它也保持不變。沒有我嘗試似乎有所幫助,並且該過程總是需要36 MB。什麼解釋了Linux和Windows之間的差異,以及如何減少內存使用量?Linux和Windows之間的Java內存使用差異

編輯: 我使用windows任務管理器和Linux top命令測量內存。 JVM是相同的,它們都是32位系統。

+1

除了操作系統,還有什麼不同?不同的jvm版本?不同的架構(例如64位和32位)?請記住,操作系統不會以相同的方式報告內存使用情況。測量實際內存使用情況非常困難。 – nos 2010-01-29 18:45:55

+0

你是如何測量內存使用量的?我知道'kill -QUIT $ PID'會給你一些關於Linux下內存使用情況的統計信息,但不知道Windows的等效內容。 – 2010-01-29 18:47:12

回答

2

我建議使用探查器(例如VisualVM)來獲取更詳細的視圖。

0

一個問題我想請幫助我理解這個問題更好的是:

請問我的Java應用程序的內存輪廓看在兩個平臺上的顯着不同?您可以使用-loggc運行並在gc可視化工具(如HPjmeter)中查看輸出來回答此問題。您應該嘗試查看具有統計顯着數據量(可能爲1000或10000 gc)的樣本集。如果答案是否定的,我會試圖將您看到的差異歸因於啓動的JVM堆分配要求。正如'nos'所指出的那樣,查明差異可能是非常困難的。當您在Linux上指定-Xmx值時,內存利用率是否超過您的Xmx值?

0

它可能也在測量共享內存