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
問題は、Java プロセスの常駐メモリと仮想メモリの使用量が jre 1.6.43 と jre 1.7.25 で大きく異なる理由です。