Displays information about allocated memory areas, free memory areas, and programs that are currently loaded into memory in the MS-DOS subsystem. Used without parameters, mem displays the status of the MS-DOS subsystem's used and free memory.


mem [{/program | /debug | /classify}]


/program : Displays the status of programs that are currently loaded into memory.

/debug : Displays the status of currently loaded programs and internal drivers, and other programming information.

/classify : Displays the status of programs loaded into conventional memory and the upper memory area (UMA).

/? : Displays help at the command prompt.


  • Windows XP does not use this command. It is accepted only for compatibility with MS-DOS files.

  • This tool is not available on Windows XP 64-Bit Edition.

  • Using /program

    You cannot use /program with /debug or /classify. You can abbreviate /program to /p.

  • Using /debug

    You cannot use /debug with /program or /classify. You can abbreviate /debug to /d.

  • Using /classify

    /classify lists the size of each program in decimal and hexadecimal notation, provides a summary of memory use, and lists the largest memory blocks that are available. You cannot use /classify with /program or /debug. You can abbreviate /classify to /c.

  • Displaying memory status

    The MS-DOS subsystem displays the status of extended memory only if you have allocated memory above 1 MB.


Suppose your MS-DOS subsystem is configured with expanded memory. To display the status of your system's total memory (that is, conventional, expanded, extended) and a list of programs currently loaded into memory, type:

mem /program

The results might look similar to the following:

Address     Name          Size       Type 

000000                   000400     Interrupt Vector
000400                   000100     ROM Communication Area
000500                   000200     DOS Communication Area
000700      IO           000310     System Data
000A10      MSDOS        0014D0     System Data
001EE0      IO           0018D0     System Data
                KBD      000800      System Program 
                HIMEM    000420      DEVICE=    
                         000340      FILES=     
                         000090      FCBS=      
                         000170      LASTDRIVE= 
                         000710      STACKS=    
0037C0      COMMAND      000A40     Program   
004210      MSDOS        000070     - Free -
004290      COMMAND      0001F0     Environment
004490      MEM          0001D0     Environment
004670      MEM          017550     Program   
01BBD0      MSDOS        084410     - Free -
09FFF0      SYSTEM       028000     System Program
0C8000      IO           0083D0     System Data
                MOUSE    0083C0      System Program
0D03E0      MSDOS        000050     - Free -
0D0440      REDIR        0009F0     Program  
0D0E40      DOSX         007CA0     Program   
0D8AF0      DOSX         001030     Data      
0D9B30      MSDOS        0164C0     - Free -
    655360 bytes total conventional memory
    655360 bytes available to MS-DOS
    637296 largest executable program size
1048576 bytes total contiguous extended memory
         0 bytes available contiguous extended memory
    405504 bytes available XMS memory
           MS-DOS resident in High Memory Area
  • "Total conventional memory" is the amount of virtual memory allocated to the MS-DOS subsystem up to the first 640KB.

  • "Available to MS-DOS" is the amount of conventional memory allocated, including the memory needed for Cmd.exe.

  • "Largest executable program size" is the largest contiguous block of conventional memory available for a program.

  • "Total EMS memory" (not shown in the preceding example) is the amount of expanded memory configured for the MS-DOS subsystem.

  • "Free EMS memory" (not shown in the preceding example) is the amount of expanded memory available for programs.

  • "Total contiguous extended memory" is the amount of memory beyond 1 MB.

  • "Available contiguous extended memory" is the extended memory available for the Interrupt 15h interface. This memory is not being managed by an extended memory manager, such as Himem.sys. Some older programs use this different extended memory scheme.

  • "Available XMS memory" is memory that is being managed by an extended-memory manager, such as Himem.sys, and that is available to programs that can use it.

Formatting legend




Information that the user must supply


Elements that the user must type exactly as shown

Ellipsis (...)

Parameter that can be repeated several times in a command line

Between brackets ([])

Optional items

Between braces ({}); choices separated by pipe (|). Example: {even|odd}

Set of choices from which the user must choose only one

Courier font

Code or program output

Command-line reference A-Z