2016-03-21 16 views
1

Ich habe die folgende Klasse in Java:Wie finde ich in Java heraus, wie groß meine maximale Heapgröße ist?

public class MemoryUsage 
{ 
    public static void main(String[] args) 
    { 
     Vector v = new Vector(); 
     while (true) 
     { 
      byte b[] = new byte[1048576]; 

      try { 
       Thread.sleep(200); 
      } catch (InterruptedException ie){}   
      v.add(b); 
      Runtime rt = Runtime.getRuntime(); 
      System.out.println("free memory: " + rt.freeMemory()); 
     } 
    } 

    public void showCurrentTime() 
    { 
     long time = System.currentTimeMillis(); 
     System.out.println(time); 
    } 
} 

Und ich möchte, wie viel Speicher zu begrenzen, kann dieses Programm verwendet werden. Ich habe versucht, eine anfängliche und die maximale Größe (von Befehlszeile) zu setzen, wie folgt:

C:\JMX_code\Memory_test>java -Xms2m -Xmx4068M MemoryUsage 
Error occurred during initialization of VM 
The size of the object heap + VM data exceeds the maximum representable size 

Aber das funktioniert nicht. Wie finde ich heraus, was meine eigene maximale Heap-Größe ist?

Meine Java Version Info. wie folgt ist:

Java (TM) SE Runtime Environment (build 1.7.0_02-b13) HotSpot Java (TM) 64-Bit-Server VM (build 22,0-b10, mixed mode)

+3

Wie viel RAM ist auf Ihrem Computer und welche Version von Java laufen Sie? – Ishmael

+1

@Coffee Was ist Ihr RAM + Swap Speichergröße? Ich bezweifle, dass es weniger als 4 GB ist. Kannst du es mit -Xmx = 2048m versuchen? –

+0

Welche Java-Version wird gerade ausgeführt (einschließlich 32 oder 64 Bit) und auf welcher Plattform laufen Sie? – callyalater

Antwort

1

Versuchen Sie, es zu ändern:

-Xms2034M -Xmx4068M MemoryUsage