# Wieviel Speicher kann die VM verwalten?



## Dudu (26. Aug 2005)

Hallo zusammen,

momentan bin ich bei meinem Tool gezwungen der VM mehr Speicher zuzuweisen. Geht ja über -Xmx??m und stellt von der Handhabung kein Problem dar. Jetzt habe ich das Problem, dass ich nicht mehr als 1,4 Gig zuweisen kann. 

```
Error occurred during initialization of VM
Could not reserve enough space for object heap
```

Bevor einer fragt, wieso soviel, ist doch bestimmt nicht nötig. Leider momentan ja, würde ja eine Datenbank zur Optimierung der Daten, die das Tool machen soll, besser finden, aber die Anforderung lautet alles im Speicher zu machen. 

Jetzt habe ich schon vermehrt gelesen, dass Leute der VM mehr Speicher zusichern konnten. Warum kommt bei mir die Fehlermeldung? RAM ist genug da, Windows 2000 Server ist auch angewiesen den Prozessen bis zu 3 Gig zu geben. Was ist da los?

Danke für die Antworten im Voraus.


----------



## lin (26. Aug 2005)

Wieviel RAM hast du denn? Wenn z.B. nur 1.5GB da sind und du 1.4GB zuweisen willst, geht's wahrscheinlich nicht, weil windows selbst schon einige 100MB braucht....


----------



## Dudu (26. Aug 2005)

Danke erstmal für die Antwort   

Auf dem Server sind 5Gig verbaut. Momentan laufen dort keine anderen Prozesse, als die Windowseigenen. Es stehen laut Taskmanager 4,7 Gig zur Verfügung. 

Habe das ganze mal auf meinem eigenen PC versucht. Dort verhält es sich so, dass ich bis zu 1,2 Gig zuweisen kann beim Starten ohne Fehlermeldung. Ab 1,3 kommt der Fehler wieder. Lustigerweise habe ich nur 1 Gig verbaut. Zuweisung von 1,1 Gig kann ich noch verstehen, da ja in Wirklichkeit mehr als 1 Gig zur Verfügung stehen (1.024 kb usw). Aber das noch 1,2 Gig klappen verstehe ich nicht mehr.

Aber ich schweife vom Thema ab :wink: 

Wie man sieht, ist genug freier RAM noch vorhanden. Woran könnte es noch liegen?


----------



## meez (26. Aug 2005)

Zuerst einmal kannst du nicht mehr als 4 GB speicher zuweisen (32 bit)..
Bei alten Versionen der VM kannst du zudem nicht mehr als 2 GB zuweisen.

Hast du den Heap (für Referenzen, Klassen vars) selber auch definiert, oder hast du nur den Speicher (für Callframes usw.)  gesetzt...Zeig doch mal den Befehl..


----------



## AlArenal (26. Aug 2005)

Dudu hat gesagt.:
			
		

> Habe das ganze mal auf meinem eigenen PC versucht. Dort verhält es sich so, dass ich bis zu 1,2 Gig zuweisen kann beim Starten ohne Fehlermeldung. Ab 1,3 kommt der Fehler wieder. Lustigerweise habe ich nur 1 Gig verbaut. Zuweisung von 1,1 Gig kann ich noch verstehen, da ja in Wirklichkeit mehr als 1 Gig zur Verfügung stehen (1.024 kb usw). Aber das noch 1,2 Gig klappen verstehe ich nicht mehr.



Die größe des RAM hat grundsätzlich wenig mit der max. Menge zuweisbaren Speichers zu tun. Der Swap ist ja nun wirklich ne alles andere als neue Erfodung. Nach meinen Erfahrungen kackt Java aber ab, sobald die VM mal vom OS in Teilen ausgelagert wird. Gerade Speicherlecks in Webanwendungen sind ätzend. Während man den Apache nur runterfahren muss, wenn man mal ein Update einspielt, darf man den Tomcat je nach Anwendung täglich wenigstens einmal neu starten...


----------



## Dudu (26. Aug 2005)

> Zuerst einmal kannst du nicht mehr als 4 GB speicher zuweisen (32 bit)..
> Bei alten Versionen der VM kannst du zudem nicht mehr als 2 GB zuweisen.
> 
> Hast du den Heap (für Referenzen, Klassen vars) selber auch definiert, oder hast du nur den Speicher (für Callframes usw.) gesetzt...Zeig doch mal den Befehl..



Es ist übrigens Version 1.4.2_6 installiert. Darf auf keine höhere Version wechseln. Aber wenigstens die 2 Gig hätte ich mal gerne bekommen. Interessiert mich halt warum er den Fehler schmeisst.

Über Eclipse starte ich mit das Tool mit den Argumenten -Xms64m -Xmx1400m. Bei -Xms64m -Xmx1500m kommt der Fehler.


----------



## meez (26. Aug 2005)

Setz die beiden immer gleich...


----------



## AlArenal (26. Aug 2005)

Mal ne blöde Frage:

Selbst wenn du es schaffst, dass sich die VM 2 GB schnappt, wie willst du sicherstellen, dass sie nicht doch mehr braucht und sich mit ner OutOfMemoryException in die ewigen Jagdgründe verabschiedet?

Was immer du da auch treibst: Besorg dir mal ein paar Infos zum Thema Caching. Auch ne DB2 oder Oracle hält nicht alle Daten im RAM vor..


----------



## Dudu (27. Aug 2005)

Sorry für die späte Antwort, war Zeit fürs Wochenende   

Im Prinzip brauche ich ja nicht 2 Gig RAM für mein Tool. Kann das ganz gut abschätzen. Es läuft ja auch so. Ich hätte halt nur gerne gewusst, wieso der Fehler kommt, wenn es eigentlich klappen sollte.


----------



## meez (27. Aug 2005)

Ich glaub nicht das das Problem bei der VM an sich liegt..
Du sagtest zwar, dass Win angewiesen ist jedem Prog bis 3 Gig. Speicher zu geben...Trotzdem denke ich, dass da irgend etwas blockiert..


----------



## Grizzly (28. Aug 2005)

Mal 'ne ganz dumme Frage: Hast Du schon einmal ein anderes Betriebssystem ausprobiert? Vielleicht liegt es ja gar nicht an der VM sondern am OS. Oder an der VM Umsetzung für das OS - was natürlich herb wäre.
Weiss natürlich nicht ob das umsetzbar ist, der Test (Aufwand des Tests, Anforderungskatalog der Anwendung bzgl. Betriebssystem). ???:L
Wie gesagt, nur so 'ne Idee.


----------



## DP (28. Aug 2005)

AlArenal hat gesagt.:
			
		

> darf man den Tomcat je nach Anwendung täglich wenigstens einmal neu starten...



was hast du denn für ne tomcat-version? ich fahre meinen nur zu updatezwecken runter, und das kann schonmal alle 2 wochen sein. normalerweise sind 5-10 user gleichzeitig zugange.


----------



## AlArenal (28. Aug 2005)

DP hat gesagt.:
			
		

> AlArenal hat gesagt.:
> 
> 
> 
> ...



OpenCMS 5 auf nem 4er und 5er Tomcat. Ist nun seit zwei Wochen eh obsolote, weil von OpenCMS auf Typo3 umgestellt wurde. Aber auch im Gespräch mit Administratoren anderer Java-basierter CMS kam heraus, dass das tägliche Neustarten eine bekannte Praxis ist.


----------



## Dudu (28. Aug 2005)

Wie ich sehe, ist das Problem doch nicht so schnell zu erklären. Da bin ich ja froh, dass ich nicht soviel Speicher für das Programm zuweisen muss. Ich werde aber trotzdem mal nach Problem und Lösung suchen. Wenn ich was finde, poste ich es.

Danke an alle,
Dudu


----------



## roddy (15. Aug 2006)

Ich glaube, das hier beantwortet deine Frage:

http://docs.sun.com/source/817-5051/pt_tuningjava.html#wp57027


----------



## meez (15. Aug 2006)

Der Thread ist von letztem Jahr  ???:L


----------



## roddy (15. Aug 2006)

Ja, aber er war nicht so wirklich beantwortet, oder?


----------



## byte (15. Aug 2006)

Dudu hat gesagt.:
			
		

> Da bin ich ja froh, dass ich nicht soviel Speicher für das Programm zuweisen muss.



Naja, ich bezweifel einfach mal, dass man heute so häufig in die Verlegenheit kommt, eine Heapsize von 1-2 GB oder noch mehr zu benötigen. :roll:

Vielleicht mögen manche Serveranwendungen sehr speicherhungrig sein, aber selbst da ist es doch irgendwann eher sinnvoller, die Anfragen auf mehrere Server zu verteilen. Denn da gibts ja dann noch andere Nadelöhrprobleme als fehlenden Speicher.


----------



## roddy (15. Aug 2006)

Naja, ich bearbeite hier n Graphen mit 1,3 Millionen Knoten und 1,6 Millionen Kanten, dabei wären 2 oder mehr Gigabyte ganz prickelnd . Und da ich 2 Stunden gegoogelt hab, bis ich rausbekommen hab, warum ich meiner VM nicht mehr Speicher geben konnte und der Threadersteller hier offensichtlich ähnliche Probleme hatte, dachte ich teile meine erlangte Weisheit mal .


----------

