还是开心的那个问题,我试了一下,问题是存在的,使用彭刚给出的工具,我得到了下面的报告(我的系统是Win2K3 + .NET FX 1.1,程序编译为debug版本):

First start
-------------------------------------------------------------------------------------
                                                   Totle               Private   Shareable Shared
                                            Pages    KBytes     KBytes  KBytes     KBytes
Grand Total Working Set     3723     14892       4736      2940         7216

Module Working Set Contributions in pages
    Total   Private Shareable    Shared Module
        4         2         2         0 ddddd.exe
       77         4         0        73 ntdll.dll
       27         3         0        24 mscoree.dll
       57         4         0        53 KERNEL32.dll
       30         3         0        27 ADVAPI32.dll
       40         2         0        38 RPCRT4.dll
       34         2         0        32 SHLWAPI.dll
       32         2         0        30 GDI32.dll
       49         2         0        47 USER32.dll
       34         4         0        30 msvcrt.dll
       13         2         0        11 IMM32.DLL
        8         2         0         6 LPK.DLL
       34         4         0        30 USP10.dll
      248        21         0       227 mscorwks.dll
       47         6         1        40 MSVCR71.dll
       39         3         0        36 fusion.dll
       31         8         0        23 SHELL32.dll
       17         2         0        15 comctl32.dll
      251         2         0       249 mscorlib.dll
      317        62       255         0 mscorlib.dll
       37         3         0        34 diasymreader.dll
       25         4         0        21 ole32.dll
       14         2         0        12 mscorsn.dll
       54         3         0        51 MSCTF.dll
        6         2         0         4 Cjktl32.dll
      277         1       141       135 system.windows.forms.dll
      273        40       233         0 system.windows.forms.dll
      171         1         0       170 system.dll
      451       385        66         0 system.dll
       63         2         0        61 MSCORJIT.DLL
       76         1         0        75 system.drawing.dll
      200       169        31         0 system.drawing.dll
        9         1         0         8 apphelp.dll
       41        36         0         5 msctfime.ime
       26         3         1        22 gdiplus.dll
       11         2         0         9 Msimtf.dll
        4         1         0         3 VERSION.dll
----------------------------------------------------------------------------------------
Minimized
----------------------------------------------------------------------------------------
                                                     Totle              Private   Shareable Shared
                                             Pages    KBytes     KBytes   KBytes    KBytes
Grand Total Working Set      169       676           416        64           196

Module Working Set Contributions in pages
    Total   Private Shareable    Shared Module
        6         1         0         5 ntdll.dll
        3         1         0         2 KERNEL32.dll
       11         2         0         9 USER32.dll
        5         2         0         3 IMM32.DLL
       18         4         0        14 mscorwks.dll
       11         6         5         0 mscorlib.dll
        7         2         0         5 MSCTF.dll
       22        12        10         0 system.windows.forms.dll
        8         8         0         0 msctfime.ime
----------------------------------------------------------------------------------------
Restored
----------------------------------------------------------------------------------------
                                                 Totle                  Private     Shareable Shared
                                             Pages    KBytes     KBytes    KBytes    KBytes
Grand Total Working Set      540      2160          968         300          892

Module Working Set Contributions in pages
    Total   Private Shareable    Shared Module
       25         2         0        23 ntdll.dll
       11         1         0        10 KERNEL32.dll
       10         3         0         7 ADVAPI32.dll
       13         2         0        11 GDI32.dll
       31         2         0        29 USER32.dll
        1         0         0         1 msvcrt.dll
        8         2         0         6 IMM32.DLL
        5         2         0         3 LPK.DLL
        7         0         0         7 USP10.dll
       60         7         0        53 mscorwks.dll
        1         0         0         1 MSVCR71.dll
       49        23        26         0 mscorlib.dll
       44         3         0        41 MSCTF.dll
        3         1         0         2 Cjktl32.dll
       77        29        48         0 system.windows.forms.dll
        8         8         0         0 system.dll
       14        14         0         0 system.drawing.dll
       11        11         0         0 msctfime.ime
        2         2         0         0 gdiplus.dll
        2         1         0         1 Msimtf.dll
-----------------------------------------------------------------------------------------

可以看出,程序启动时加载了许多系统和应用程序模块(比如Cjktl32.dll就是金山词霸的dll),这可能是为了JIT的需要(MSCORJIT.DLL),在最小化时这些模块被卸载了,还原之后,就只剩下了程序运行所需的模块了。这看起来是内存变化的主要原因。

如果程序不被最小化,那些JIT用到的模块什么时候被卸载呢?