为什么是java进程';jre 1.6.43和jre 1.7.25之间的驻留内存和虚拟内存使用情况非常不同
当java进程在jre 1.6.43中运行时,我使用top命令监视内存使用情况,显示为:为什么是java进程';jre 1.6.43和jre 1.7.25之间的驻留内存和虚拟内存使用情况非常不同,java,virtual-memory,Java,Virtual Memory,当java进程在jre 1.6.43中运行时,我使用top命令监视内存使用情况,显示为: top - 09:14:05 up 13 days, 23:04, 2 users, load average: 1.78, 1.35, 1.25 Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie Cpu(s): 1.5%us, 1.3%sy, 0.0%ni, 95.7%id, 1.5%wa, 0.0%hi
top - 09:14:05 up 13 days, 23:04, 2 users, load average: 1.78, 1.35, 1.25
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.5%us, 1.3%sy, 0.0%ni, 95.7%id, 1.5%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 23651M total, 23466M used, 184M free, 402M buffers
Swap: 40962M total, 0M used, 40962M free, 17427M cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
23764 sysomc 20 0 695m 467m 12m S 16 2.0 58:53.41 java
然后,我在jre 1.7.25中运行java进程,top命令显示内存使用情况,如下所示:
top - 10:40:26 up 15 days, 31 min, 1 user, load average: 0.77, 0.89, 0.87
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.5%us, 1.3%sy, 0.0%ni, 95.5%id, 1.6%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 23651M total, 19892M used, 3758M free, 1651M buffers
Swap: 40962M total, 0M used, 40962M free, 12055M cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
27282 sysomc 20 0 1100m 896m 13m S 2 3.8 1:34.51 java
问题是,为什么jre 1.6.43和jre 1.7.25之间的java进程的驻留内存和虚拟内存使用情况有很大的不同?版本之间的默认初始/最大堆大小可能不同?我不确定。第二篇文章中有一个代码片段,向您展示了如何打印默认和最大堆大小。在这两个版本上都尝试一下,并发布您发现的内容。为两个JVM提供您自己的
-Xms
和-Xmx
选项,确保为每个JVM提供相同的参数,然后看看会发生什么。