【问题标题】:Why does Glassfish appear to require much more memory in Linux than in Windows?为什么 Glassfish 在 Linux 中似乎比在 Windows 中需要更多的内存?
【发布时间】:2011-04-18 21:04:38
【问题描述】:

我最近一直在修补 GlassFish 2.1.1,在 Ubuntu Linux 机器和 Windows XP 机器上都有。

查看代表 asadmin、JavaDB 服务器和 Windows 上 GlassFish 应用服务器域本身的“java”进程(使用任务管理器),它们加起来刚好超过 100 MB 内存。

但是,查看 Linux 机器上的相同进程(使用“ps aux”和 Gnome 系统监视器)显示内存使用量大约为 800 MB。

这对我来说似乎非常奇怪。如果有的话,我会假设内存使用在 Windows 上不太有利。无论哪种方式,我都不会想到两者之间的摇摆会如此戏剧化。我在这里缺少一些基本的东西吗?我不一定需要详细的分析信息,我只需要两个平台上的总内存使用(现实世界)的大致准确数字。

【问题讨论】:

  • 恐怕Windows和Linux中计算已用内存的方式不同——这是我注意到的——需要一些研究来证实。 (这就是为什么它不是答案)
  • 你在运行 ps aux 时是通过 RSS 还是 VSZ?
  • 我想你明白了,jonescb。查看 RSS 值,它们更符合 Windows 上的内存使用情况(实际上大约减少了 10% 左右)。我只是感到困惑,因为 Gnome 系统监视器通过必须是 VSZ 值来报告“总”内存使用情况。 Linux 中的内存使用并不是世界上最直观的事情!
  • 如果可以,请考虑使用 GlassFish 3.0.1。非常好。

标签: java windows linux jakarta-ee glassfish


【解决方案1】:

因为你衡量它的方式不同。

众所周知,在支持虚拟内存和共享内存的系统上测量内存使用情况非常困难; Linux 和 Windows 都属于这一类。

基本上是围绕

  • 你算算刚刚分配但没有映射的页吗?
  • 您是否计算可能共享的页面? (例如来自映射文件/可执行文件/库等的那些)

答案并不是那么简单。

Linux 提供了两种“简单”的内存测量方法,即 RSS 和 VM 大小,这两者都不能准确代表人们在说“它使用了多少内存”时通常认为他们的意思。程序员认为他们的意思通常介于 RSS 和 VM 大小之间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 2011-12-21
    • 2014-02-08
    • 2016-12-02
    • 2017-06-08
    • 2017-06-13
    • 1970-01-01
    相关资源
    最近更新 更多