我有一个有趣的场景。该应用程序的虚拟字节值比我预期的要高。另一方面,私有字节具有合理的价值。
这是一个基于 Java 的应用程序,它还通过 JNI 将 .Net 组件加载到同一进程。这不是采用虚拟字节的 Java 堆,因为我通过 xmlx 参数对其进行了限制。
有没有办法可以使用 Windbg 分析虚拟字节的消耗?例如,如果代码打开了与另一个进程的共享内存 - 我可以看到吗?我可以总结所有这些共享内存段吗?
这是一个生产环境,所以我有点受限
谢谢萨尔
我有一个有趣的场景。该应用程序的虚拟字节值比我预期的要高。另一方面,私有字节具有合理的价值。
这是一个基于 Java 的应用程序,它还通过 JNI 将 .Net 组件加载到同一进程。这不是采用虚拟字节的 Java 堆,因为我通过 xmlx 参数对其进行了限制。
有没有办法可以使用 Windbg 分析虚拟字节的消耗?例如,如果代码打开了与另一个进程的共享内存 - 我可以看到吗?我可以总结所有这些共享内存段吗?
这是一个生产环境,所以我有点受限
谢谢萨尔
虚拟字节代表进程对虚拟地址空间的使用,不一定代表内存使用,甚至不代表虚拟内存使用。如果进程是 32 位,则不要担心这个统计数据,除非它是 1 GB 或更多的最佳部分,如果进程是 64 位,则不要担心完全停止。
Mark Russinovich 的博客文章推动 Windows 的极限:虚拟内存对此提供了更多详细信息。
您可能想要查看的统计数据是页面文件字节数。私有字节和工作集也可能很有趣。这些在Windows Server 2003 Performance Counters Reference的 Technet 文档中的Process Object下进行了描述。
在用户模式调试会话中,您可以使用 !address 命令!address -f:FileMap
或!address -summary
0:018> !address -summary
Failed to map Heaps (error 80004005)
--- Usage Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
Free 211 7ff`f38e3000 ( 8.000 Tb) 100.00%
Image 577 0`05cec000 ( 92.922 Mb) 46.68% 0.00%
MemoryMappedFile 60 0`0375a000 ( 55.352 Mb) 27.81% 0.00%
<unclassified> 115 0`0289e000 ( 40.617 Mb) 20.41% 0.00%
Stack 60 0`00a00000 ( 10.000 Mb) 5.02% 0.00%
TEB 20 0`00028000 ( 160.000 kb) 0.08% 0.00%
PEB 1 0`00001000 ( 4.000 kb) 0.00% 0.00%
--- Type Summary (for busy) ------ RgnCount ----------- Total Size -------- %ofBusy %ofTotal
MEM_IMAGE 578 0`05ced000 ( 92.926 Mb) 46.68% 0.00%
MEM_MAPPED 60 0`0375a000 ( 55.352 Mb) 27.81% 0.00%
MEM_PRIVATE 195 0`032c6000 ( 50.773 Mb) 25.51% 0.00%
--- State Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal
MEM_FREE 211 7ff`f38e3000 ( 8.000 Tb) 100.00%
MEM_COMMIT 782 0`08ae4000 ( 138.891 Mb) 69.78% 0.00%
MEM_RESERVE 51 0`03c29000 ( 60.160 Mb) 30.22% 0.00%
--- Protect Summary (for commit) - RgnCount ----------- Total Size -------- %ofBusy %ofTotal
PAGE_READONLY 336 0`050ca000 ( 80.789 Mb) 40.59% 0.00%
PAGE_EXECUTE_READ 104 0`02785000 ( 39.520 Mb) 19.85% 0.00%
PAGE_READWRITE 262 0`010db000 ( 16.855 Mb) 8.47% 0.00%
PAGE_WRITECOPY 59 0`0017d000 ( 1.488 Mb) 0.75% 0.00%
PAGE_READWRITE|PAGE_GUARD 20 0`0003c000 ( 240.000 kb) 0.12% 0.00%
PAGE_EXECUTE_READWRITE 1 0`00001000 ( 4.000 kb) 0.00% 0.00%
--- Largest Region by Usage ----------- Base Address -------- Region Size ----------
Free 0`ff8b5000 7fd`ed39b000 ( 7.992 Tb)
Image 7fe`fe39a000 0`0089e000 ( 8.617 Mb)
MemoryMappedFile 0`007b1000 0`012df000 ( 18.871 Mb)
<unclassified> 0`7f0e0000 0`00f00000 ( 15.000 Mb)
Stack 0`06740000 0`00079000 ( 484.000 kb)
TEB 7ff`fff94000 0`00002000 ( 8.000 kb)
PEB 7ff`fffd9000 0`00001000 ( 4.000 kb)