2016-05-12 11 views
0

Wie kann eine Methode, die auf einer anderen Methodenausgabe basiert, am besten in Bezug auf die Speichernutzung aufgerufen werden?Speicher des Java-Prozesses reduzieren

Zum Beispiel: Erster Weg:

Animal a = Farm.getAnimal(5); 
item.setAnimal(a); 

Zweiter Weg:

item.setAnimal(Farm.getAnimal(5)); 

Darüber hinaus das Ergebnis des item.setAnimal(...) Verwendung Java-Speichers nicht zu retten?

+0

Kein Unterschied. Die einfache Antwort ist, dass nur ein "neues" die Speichernutzung in Java verursacht. Aber was bedeutet "das Ergebnis speichern"? – zapl

Antwort

0

Objekte werden auf dem Heap erstellt und die Objektvariable (Animal a) bezieht sich tatsächlich auf ein Objekt auf dem Heap (Es wird keine Kopie erstellt, wenn Sie dies einer Variablen zuweisen).

Um Ihre erste Frage zu beantworten, sind beide Möglichkeiten, das Tier einzustellen, gleich und es wird kein zusätzlicher Speicherverbrauch erzeugt.

Wenn Sie das Objekt jedoch in einer Variablen speichern, sollten Sie sicherstellen, dass Sie den Bereich einschränken und daher keinen Speicherleck zulassen.

Für Ihre zweite Frage verwendet item.setAnimal (..) zusätzlichen Speicher? - Die Antwort ist aus den oben genannten Gründen offensichtlich, sie führt nicht zu einer zusätzlichen Speichernutzung, da dasselbe Objekt in der set-Methode referenziert wird.

Verwandte Themen