20 Stimmen

Wie kann ich die Größe des physischen Speichers in Java ermitteln?

Ich schreibe ein Installationsprogramm, das die Konfiguration des Produkts auf die jeweilige Hardware, auf der es ausgeführt werden soll, abstimmt. Insbesondere möchte ich feststellen, wie viel physischer Arbeitsspeicher im System installiert ist, damit ich abschätzen kann, wie viel Arbeitsspeicher dem Produkt zugewiesen werden muss, wenn es ausgeführt wird.

Idealerweise würde ich dies gerne plattformunabhängig und in reinem Java tun, da das Installationsprogramm auf mehreren verschiedenen Plattformen laufen muss, aber falls dies nicht möglich ist, werden Lösungen für Windows bevorzugt, da dies die häufigste Einsatzplattform ist.

In diesem Fall kann man davon ausgehen, dass das Produkt die einzige/Hauptanwendung ist, die auf dem Rechner läuft, so dass ich mich nicht darum kümmern muss, andere Anwendungen zu verdrängen. Ich möchte nicht zu viel Speicherplatz zuweisen, da dies unserer Erfahrung nach die Leistung beeinträchtigen kann.

1voto

wds Punkte 30993

Unter Linux können Sie Folgendes verwenden sysinfo(2) . Ich glaube nicht, dass das mit reinem Java wirklich möglich ist.

1voto

Jerry Tian Punkte 3420

Ich bin in den letzten Jahren mehrmals auf diese Frage gestoßen. Die meisten der vorhandenen Antworten sind hacking und plattformabhängig, so gibt es keine in sich geschlossene, plattformunabhängige Tool-Satz da draußen für JAVA heute?

Tatsächlich gibt es eine: https://github.com/oshi/oshi

OSHI ist eine freie JNA-basierte (native) Betriebssystem- und Hardware-Informationsbibliothek für Java. Sie erfordert keine Installation zusätzlicher nativer Bibliotheken und zielt darauf ab, eine plattformübergreifende Implementierung zum Abrufen von Systeminformationen wie Betriebssystemversion, Prozesse, Speicher- und CPU-Nutzung, Festplatten und Partitionen, Geräte, Sensoren usw. zu bieten.

Ja, es hat JNI intern verwendet, wie andere Methoden tun, aber wer kümmert sich darum, wenn alle Details sorgfältig hinter einer sauberen API versteckt sind und das Paket sind recht einfach zu installieren, wenn Sie eine anständige, moderne Tools zur Verwaltung von Abhängigkeiten (Maven, Gradle, etc.) verwenden.

Für jedes ernsthafte Projekt sollten Sie dieses verwenden. Erfinden Sie das Rad nicht neu.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X