windowscommand-lineworking-set

Empty Working Set from cmd


I want to write a cmd script to periodically empty the working set from the command prompt. For now I empty the working set in the Rammap tool from sysinternals, but that can't be run by a script.


Solution

  • It's probably easiest to compile something like this:

    #include <iostream>
    #include <windows.h>
    
    int main(int argc, char **argv) { 
        if (argc != 2) {
            std::cerr << "Usage: min_mem <process_id>\n";
            return 1;
        }
    
        HANDLE process = OpenProcess(PROCESS_SET_QUOTA, false, atoi(argv[1]));
        SetProcessWorkingSetSize(process, -1, -1);
    }
    

    ...and then run it in your script, something like:

    mem_min 1234
    

    ...but replacing 1234 with the process ID (in decimal) of the process whose memory you want to minimize.

    That said: I'd ask that this answer not be upvoted, since it's really a pretty crappy answer to a question that's basically just a gimme the codez I've been weak enough to post it, but would prefer not to get any rep for doing so.