zoukankan      html  css  js  c++  java
  • !eeheap -gc 和 !address输出的关联性

    !address是一个非常强大的调试器命令。它向您显示了您的虚拟地址空间的确切分布。

    如果你已经从 !sos.eeheap -gc命令得到了输出,例如:

    0:003> !eeheap -gc
    Number of GC Heaps: 1
    generation 0 starts at 0x01245078
    generation 1 starts at 0x0124100c
    generation 2 starts at 0x01241000
    ephemeral segment allocation context: (0x0125a900, 0x0125b39c)
     segment    begin allocated     size
    001908c0 793fe120  7941d8a8 0x0001f788(128904)
    01240000 01241000  0125b39c 0x0001a39c(107420)
    Large object heap starts at 0x02241000
     segment    begin allocated     size
    02240000 02241000  02243250 0x00002250(8784)
    Total Size   0x3bd74(245108)
    ——————————
    GC Heap Size   0x3bd74(245108)

    您可以将!address输出的段与之关联起来以便更好地看到它们。对于这个特定的例子,下面是!address命令的输出:

    0:003> !address
    [omitted]
        01232000 : 01232000 – 0000e000
                        Type     00000000
                        Protect  00000001 PAGE_NOACCESS
                        State    00010000 MEM_FREE
                        Usage    RegionUsageFree
        01240000 : 0124000000052000
                        Type     00020000 MEM_PRIVATE
                        Protect  00000004 PAGE_READWRITE
                        State    00001000 MEM_COMMIT
                        Usage    RegionUsageIsVAD
                   01292000 – 00fae000
                        Type     00020000 MEM_PRIVATE
                        Protect  00000000
                        State    00002000 MEM_RESERVE
                        Usage    RegionUsageIsVAD
                   0224000000012000
                        Type     00020000 MEM_PRIVATE
                        Protect  00000004 PAGE_READWRITE
                        State    00001000 MEM_COMMIT
                        Usage    RegionUsageIsVAD
                   02252000 – 00fee000
                        Type     00020000 MEM_PRIVATE
                        Protect  00000000
                        State    00002000 MEM_RESERVE
                        Usage    RegionUsageIsVAD
        03240000 : 0324000073050000
                        Type     00000000
                        Protect  00000001 PAGE_NOACCESS
                        State    00010000 MEM_FREE
                        Usage    RegionUsageFree
        76290000 : 7629000000001000
                        Type     01000000 MEM_IMAGE
                        Protect  00000002 PAGE_READONLY
                        State    00001000 MEM_COMMIT
                        Usage    RegionUsageImage
                        FullPath C:WINDOWSsystem32IMM32.DLL
                   7629100000015000
                        Type     01000000 MEM_IMAGE
                        Protect  00000020 PAGE_EXECUTE_READ
                        State    00001000 MEM_COMMIT
                        Usage    RegionUsageImage
                        FullPath C:WINDOWSsystem32IMM32.DLL
    [omitted]
    
    ——————– Usage SUMMARY ————————–
    [omitted]
    
    ——————– State SUMMARY ————————–
        TotSize   Pct(Tots) Usage
       0275c000 : 1.92%      : MEM_COMMIT
       7b20a000 : 96.20%      : MEM_FREE
       0268a000 : 1.88%      : MEM_RESERVE
    
    Largest free region: Base 03240000 – Size 73050000
    这意味着这两个段(从01240000和02240000开始)是相邻的-其中一部分被提交,其余的仍然是保留内存。在这两个部分之前和之后,我们有一些自由空间。正如我在下面提到的,托管堆不太可能分割虚拟地址空间,因为我们擅长一次请求大的块,而且通常操作系统在给我们提供相当连续的地址方面也不错。如果您有临时的大型对象段,并且GC需要频繁地获取和释放VM块,那么很少会出现托管堆碎片化VM的情况。这些块可能分散在VM空间中,特别是考虑到同时还有其他东西在消耗VM。
  • 相关阅读:
    Redission源码
    RocketMQ 的heartBeat在做哪些事情
    Netty调用channel.close方法和 客户端所在Java进程正常/异常关闭的细节
    RocketMQ源码之 事务消息的回调方法应该怎么写?
    spring 源码
    多线程同步工具ReentrantLock CountDownLatch CyclicBarrier Semaphore join
    RocketMQ 的事务消息
    RocketMQ 怎样解决为了 实时拉取消息 而不得不一直轮询的问题
    .net winform 调用类中的webbrowser 报错:当前线程不在单线程单元中,因此无法实例化 ActiveX
    [转]如何不格式化、不丢失数据修复内存卡
  • 原文地址:https://www.cnblogs.com/yilang/p/13544594.html
Copyright © 2011-2022 走看看