Windows Total Memory Size



  • Hallo,
    Ich benötige eine Methode um die Total Memory Size unter Windows zu bestimmen. Nach langem suchen bin ich auf folgendes CodeSnippet gestoßen.

    #ifdef WIN32
    
    MEMORYSTATUS ms;
    GlobalMemoryStatus(&ms);
    
    //Debug 1024000L 1048576L
    //printf("Total physical: %lu bytes (%luMB)\n", ms.dwTotalPhys, ms.dwTotalPhys / 1048576L);
    
    return (ms.dwTotalPhys / 1048576L);
    #endif
    

    Das Problem bei dieser Funktion ist, dass mir Windows (wahrscheinlich durch irgend eine Memory-Limitation-Per-Prozess) nur 2047MB anzeigt, obwohl weitaus mehr memeory im System verfügbar ist.

    Gibt es noch andere Wege an die wirkliche Total Memory Size heranzukommen?



  • Du musst mit /LARGEADDRESSAWARE linken, dann gehts. Oder du verwendest GlobalMemoryStatusEx.



  • hmm, wenn ich mit folgenden Optionen kompiliere, bekomme ich trozdem nur die 2047 MB angezeigt

    gcc -IC:\Java\j2sdk1.4.2_17\include -IC:\Java\j2sdk1.4.2_17\include\win32 -shared -Wl,--add-stdcall-alias,--large-address-aware -o MemoryDetection.dll MemoryDetection.cpp



  • Dann nimm GlobalMemoryStatusEx. Ich weiß nicht wie gcc das handhabt. Der Verweis bezog sich auf Visual C++.



  • nach langem rumprobieren merke ich, dass ich wohl nicht um den visual c++ compiler herum komme.
    Habe nun visual studio 2005 aufgesetzt und mein JNI-Programm compiliert.
    Wenn ich die dll allerdings von java aus aufrufe erhalte ich immer wieder die fehlermeldung "Can't find dependant libraries".

    gibt es eine möglichkeit eine (von mir aus auch sehr große dll) zu erzeugen, die keine abhängigkeiten besitzt?


Anmelden zum Antworten