当在Windows和Linux (Debian)上运行相同的java进程(一个jar)时,Linux进程从启动开始就使用了更多的内存(12MB和36MB)。即使在尝试使用-Xmx/Xms/etc限制堆大小时,它也保持不变。我尝试的任何东西似乎都没有帮助,这个过程总是需要36MB。如何解释Linux和Windows之间的这种差异,以及如何减少内存使用?
编辑:我使用windows任务管理器和Linux top命令来测量内存。JVM是相同的,并且它们都是32位系统。
发布于 2010-01-30 02:56:46
我建议使用诸如VisualVM之类的分析器来获得关于正在发生的事情的更详细的视图。
发布于 2010-01-30 03:10:02
为了帮助我更好地理解这个问题,我会问一个问题:
我的Java应用程序的内存配置文件在这两个平台上看起来有很大的不同吗?您可以通过运行-loggc并在HPjmeter等gc可视化工具中查看输出来回答这个问题。您应该尝试查看具有统计意义的数据量的样本集,可能是1,000或10000个gc图。如果答案是否定的,我很想将您看到的差异归因于启动时的JVM堆分配要求。正如“no”所指出的,精确定位两者之间的差异是出了名的难。当您在Linux上指定XMX值时,内存利用率是否超过您的-Xmx值?
发布于 2010-01-30 03:17:10
它可能也在测量共享内存
https://stackoverflow.com/questions/2164294
复制相似问题