为什么Glassfish在Linux中需要的内存比在Windows中要多得多?

问题描述:

最近,我一直在修补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

因为你不同的测量它。

这是非常难以测量在其上支持的虚拟存储器和共享存储器系统的内存使用情况; Linux和Windows都属于这一类。

基本上它的茎周围

  • 你指望它被分配但刚才没有映射页面?
  • 您是否计数可能共享的页面? (例如来自映射文件/可执行文件/库等的文件)

答案并非如此微不足道。

Linux提供了两个“易”记忆测量,RSS和虚拟内存大小,这两者都不准确代表人们通常认为,当他们说“它是使用多少内存”,他们说。程序员认为他们的意思常常落在RSS和VM大小之间。

+0

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