目前,我已经开发了一个Java应用程序,它在JDK 1.7下运行,当我在Linux上部署这个应用程序并使用命令 top 监视它时,我发现VIRT是如此之高,请看以下,
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
65044 app 20 0 31.5g 418m 13m S 0.0 0.1 0:55.17 java
大约需要31.5 GB。
我还使用了pmap -x进一步研究,这里是详细信息,
Address Kbytes RSS Dirty Mode Mapping
0000000000400000 4 4 0 r-x-- java
0000000000600000 4 4 4 rw--- java
0000000000910000 6544 6544 6544 rw--- [ anon ]
0000000080000000 41472 41324 41324 rw--- [ anon ]
0000000082880000 42496 0 0 rw--- [ anon ]
0000000085200000 1397760 76 76 rw--- [ anon ]
00000000da700000 19517440 0 0 rw--- [ anon ]
0000000581b00000 1224704 322816 322816 rw--- [ anon ]
00000005cc700000 9233408 0 0 rw--- [ anon ]
0000003895600000 128 116 0 r-x-- ld-2.12.so
000000389581f000 8 8 8 r---- ld-2.12.so
0000003895821000 4 4 4 rw--- ld-2.12.so
0000003895822000 4 4 4 rw--- [ anon ]
0000003895a00000 1576 616 0 r-x-- libc-2.12.so
0000003895b8a000 2048 0 0 ----- libc-2.12.so
0000003895d8a000 16 16 8 r---- libc-2.12.so
0000003895d8e000 8 8 8 rw--- libc-2.12.so
0000003895d90000 16 12 12 rw--- [ anon ]
0000003895e00000 92 72 0 r-x-- libpthread-2.12.so
0000003895e17000 2048 0 0 ----- libpthread-2.12.so
0000003896017000 4 4 4 r---- libpthread-2.12.so
0000003896018000 4 4 4 rw--- libpthread-2.12.so
0000003896019000 16 4 4 rw--- [ anon ]
0000003896200000 8 8 0 r-x-- libdl-2.12.so
0000003896202000 2048 0 0 ----- libdl-2.12.so
0000003896402000 4 4 4 r---- libdl-2.12.so
0000003896403000 4 4 4 rw--- libdl-2.12.so
0000003896600000 28 20 0 r-x-- librt-2.12.so
0000003896607000 2044 0 0 ----- librt-2.12.so
0000003896806000 4 4 4 r---- librt-2.12.so
0000003896807000 4 4 4 rw--- librt-2.12.so
0000003896a00000 524 52 0 r-x-- libm-2.12.so
0000003896a83000 2044 0 0 ----- libm-2.12.so
0000003896c82000 4 4 4 r---- libm-2.12.so
0000003896c83000 4 4 4 rw--- libm-2.12.so
0000003899a00000 88 16 0 r-x-- libgcc_s-4.4.7-20120601.so.1
0000003899a16000 2044 0 0 ----- libgcc_s-4.4.7-20120601.so.1
0000003899c15000 4 4 4 rw--- libgcc_s-4.4.7-20120601.so.1
我的应用程序确实是一个多线程应用程序,但它在启动时只有3个。
启动后,我发现VIRT增长到31.5 GB,特别是地址00000000da700000,大约需要20 GB。
有想法的人?感谢。