为什么是java进程';jre 1.6.43和jre 1.7.25之间的驻留内存和虚拟内存使用情况非常不同

为什么是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

当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,  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提供相同的参数,然后看看会发生什么。