2010-09-29 61 views
1

最近,我一直在修補GlassFish 2.1.1,在一個Unbuntu Linux和Windows XP上。爲什麼Glassfish在Linux中需要的內存比在Windows中要多得多?

查看代表asadmin,JavaDB服務器和GlassFish應用程序服務器域本身(在Windows上使用任務管理器)的「java」進程,它們合計的內存僅超過100 MB。

然而,看着在Linux中相同的過程(使用「的ps aux」和Gnome的系統監視器)顯示的800 MB球場內存使用情況。

這似乎非常奇怪了吧。如果有的話,我會認爲內存使用在Windows上不太有利。無論哪種方式,我都不會預料到兩者之間的搖擺會非常激烈。我在這裏錯過了一些基本的東西嗎?我不一定需要詳細的性能分析信息,我只需要在兩個平臺上使用大致準確的內存使用情況(真實世界)。謝謝!

+0

恐怕計算使用的內存的方式在Windows和Linux中是不同的 - 這是我發現 - 需要一些研究來證實。 *(這就是爲什麼它不是答案)* – 2010-09-29 14:56:46

+0

當你運行ps aux時,你是通過RSS還是VSZ? – jonescb 2010-09-29 14:57:16

+0

我想你明白了,jonescb。看看RSS值,它們更符合Windows上的內存使用情況(實際上約爲10%左右)。我只是感到困惑,因爲Gnome系統監視器報告「Total」內存使用量必須是VSZ值。 Linux中的內存使用情況並不完全是世界上最直觀的事情! – 2010-09-29 15:21:56

回答

2

因爲你不同的測量它。

這是非常難以測量在其上支持的虛擬存儲器和共享存儲器系統的內存使用情況; Linux和Windows都屬於這一類。

基本上它的莖周圍

  • 你指望它被分配但剛纔沒有映射頁面?
  • 您是否計數可能共享的頁面? (例如來自映射文件/可執行文件/庫等的文件)

答案並非如此微不足道。

Linux提供了兩個「易」記憶測量,RSS和虛擬內存大小,這兩者都不準確代表人們通常認爲,當他們說「它是使用多少內存」,他們說。程序員認爲他們的意思常常落在RSS和VM大小之間。

+0

+1 - 很好的答案。 – duffymo 2010-09-29 16:40:43