windows - Windbg - 分析虚拟字节

标签 windows windbg production-environment

我有一个有趣的场景。 该应用程序的虚拟字节值比我预期的要高。另一方面,Private Bytes 处于合理的值。

这是一个基于 Java 的应用程序,它还通过 JNI 将 .Net 组件加载到同一进程。这不是采用虚拟字节的 Java 堆,因为我通过 xmx 参数对其进行了限制。

有没有一种方法可以使用 Windbg 分析虚拟字节的消耗? 例如,如果代码打开了与另一个进程的共享内存——我能看到吗?我可以对所有这些共享内存段求和吗?

这是一个生产环境,所以我有些受限

谢谢 萨尔

最佳答案

在用户模式调试 session 中,您可以使用 !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)

关于windows - Windbg - 分析虚拟字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13922771/

相关文章:

windows - 防止以管理权限启动

mysql - 将 .sql 文件导入 mysql(最终导入到 excel)

windbg - 从 Linux 调试 Windows 内核

windbg - 如何使用windbg在堆栈跟踪中查找与偏移量相对应的行号?

php - 为什么 XAMPP 不适合生产?

ruby - 如何使用puppet在服务器上设置环境变量?

sql - Postgresql 选择前导空格的处理

java - AWT 机器人无法拖动窗口

c# - SOS 不支持当前目标架构

javascript - 如何在 Angular 2 CLI 中使用 "ng build --prod"和 "ng serve --prod",出现 404 错误