Der Java Heap Speicher stellt die Menge an Arbeitsspeicher dar, welche ein Java Programm für sich in Anspruch nehmen darf. Zu dieser Speichermenge zählt jedoch nicht der Speicherbedarf, den die Virtual Machine für die Ausführung in Anspruch nimmt. Standardmäßig stehen einem Java Programm 64MByte Java Heap Speicher zur Verfügung.
Um den initialen und maximalen Speicherplatz für den Heap-Speicher eines Programmes festzulegen können folgende Argumente der "Virtual Machine" übergeben werden:
Initaler Speicher:Xms<Speicher>
Xmx<Speicher>
java -Xms64M -Xmx256M MeinProgramm.class
Hier wird die "Virtual Machine" mit einem initialen Heap Speicher von 64MByte und einem maximalen Heap Speicher von 256MByte für das Programm "MeinProgramm.class" gestartet.
Das nachfolgende Beispielprogramm zeigt wie man Informationen zum
Java Heap Speicher zur Laufzeit eines Programmes ermitteln kann.
Dies kann insbesondere dazu hilfreich sein, um vor einer drohenden
OutOfMemoryException
den Anwender entsprechend zu warnen
bzw. geeignete Gegenmaßnahmen zu treffen.
public class MemoryExample { public static void main(String[] args){ Runtime runtime = Runtime.getRuntime(); System.out.println("Free memory: "+runtime.freeMemory()); System.out.println("Max. memory: "+runtime.maxMemory()); System.out.println("Total memoty: "+runtime.totalMemory()); } }
Die einzelnen Methoden der Klasse Runtime
haben dabei folgende
Bedeutung:
freeMemory()
maxMemory()
totalMemory()
Die ausgegebenen Speicher sind sind die jeweiligen Speicher in Bytes.
Dieser Abschnitt gilt für Java Versionen < 8.0 .
PermSize steht für die permanente Generation des Heap-Speichers, welcher für die permanente
Objekterzeugung zur Verfügung steht und alle Reflexionsdaten für die JVM enthält.
Die permanente Generation des Speichers können wir mit den JVM Startparametern
XX:PermSize
und XX:MaxPermSize
beeinflussen.
XX:PermSize
XX:MaxPermSize
Nachfolgend ein Beispiel zur beeinflussung der permanenten Generation des Heap-Speichers.
java -XX:MaxPermSize=512m -XX:PemrSize=256m ...
Im Beispiel wird die anfängliche Größe der permanenten Generation auf 256 MByte festgelegt. Die maximale Größe des permanenten beträgt 512 MByte.
Die hier angegebenen Parameter XX:MaxPermSize
und XX:PermSize
wurden
in der Java Version 8.0 entfernt.
www.heise.de
Tempo frei - Feintuning der Speicherbelegung von Java-Programmen mit visualgc
http://www.heise.de/developer/artikel/Feintuning-der-Speicherbelegung-von-Java-Programmen-mit-visualgc-227258.html
eva/3 Application Builder
Java Start Parameter
http://doc.optadata.com/de/dokumentation/application/execute/start_parameter.html