質問: このjavaプロセスはどのくらいのメモリを消費しますか?pmapとtopの結果は競合しています 1つのプロセスが消費するメモリの正確な量を知りたいだけです。pgrep java -l 21786 java 私が持っている合計メモリは1gbです:[root@home tmp]# free -m total used free shared buffers cached mem: 1024 952 71 0 0 0 -/+ buffers/cache: 952 71 swap: 0 0 0 javaは413588kを使用します。これは、javaが使用しているメモリの40%以上ですpmap 21786 ...... b7fc2000 4k r-x-- /usr/lib/locale/en_us.utf8/lc_identification b7fc3000 4k rwx-- [ anon ] b7fc4000 4k r-x-- [ anon ] b7fc5000 108k r-x-- /lib/ld-2.5.so b7fe0000 4k r-x-- /lib/ld-2.5.so b7fe1000 4k rwx-- /lib/ld-2.5.so bf85b000 84k rwx-- [ stack ] total 413588k top - 23:40:54 up 22 days, 6:17, 5 users, load average: 0.02, 0.04, 0.03 tasks: 100 total, 2 running, 98 sleeping, 0 stopped, 0 zombie cpu(s): 1.7%us, 1.3%sy, 0.0%ni, 97.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st mem: 1048800k total, 975180k used, 73620k free, 0k buffers swap: 0k total, 0k used, 0k free, 0k cached pid user pr ni virt res shr s %cpu %mem time+ command 21786 mirror 19 0 403m 102m 8712 s 0.3 10.0 0:10.52 java 上位の結果がメモリの10%のみがjavaプロセスによって使用されていることを示しているのはなぜですか?したがって、topとpmapの結果が競合します、fommerは、システムメモリの40%以上がjavaプロセスによって使用されていることを示していますが、topの結果はメモリの10%のみがjavaプロセスによって使用されます。どちらが正しいですか?1つのプロセスで使用されているメモリの正確な量を知るにはどうすればよいですか?
回答: 仮想メモリと物理メモリを混同しています。pmapは、最上位のvirt列(403m)に一致する仮想メモリ統計(413588kを使用)を報告しています。これには、他のプロセスやディスクに保存されている他のページと共有されるデータが含まれます。使用する pmap -x to get ram使用統計(rss列)。java現在のプロセスram使用量はtop res列、103mbで報告されます。