Przypisywanie klasy do zmiennej powodem wykorzystywania dużej ilości pamięci?

0

Witam,
od jakiegoś czasu tworzę grę i ostatnio zauważyłem, że zajmuje ona stanowczo więcej pamięci (RAM) niż powinna.
Szukam więc przyczyny. Chyba ją znalazłem, ale muszę się upewnić ;)
Załóżmy, że w konstruktorze każdej klasy tworzę (jak to nazwać?) odwołanie do klasy głównej (w tym przypadku main):

Main main123;
public PrzykladowaKlasa1(Main main){
main123 = main;
}
 

I druga klasa:

 Main main123;
public PrzykladowaKlasa2(Main main){
main123 = main;
}

Jak widać w każdej klasie odwołuję się do klasy Main. (klasa Main wywołuje konstruktory, przesyłając swoją zawartość)
I jeśli tak zrobię, to pamięć zużywana przez funkcje w tej klasie się powieli? Tzn. jeśli klasa main zużywa 3 MB, ty jeśli tak zrobię, to łączna zajmowana pamięć będzie wynosiła 6 MB z hakiem?
Czy dobrze rozumiem, czy się zagmatwałem? :/
Z góry dziękuję i pozdrawiam.
PS: Wiem, że to kiepsko wytłumaczyłem, ale nie wiem jak to inaczej ująć.

0

Nie, pamięć się 'nie powiela', trzymasz tylko referencję do tego obiektu.

0

Nie rozumiem tego: "klasa Main wywołuje konstruktory, przesyłając swoją zawartość".
Napisz co się dzieje bo może tu jest powód problemów.

Jeżeli chodzi o wycieki pamięci w Javie, to z definicji przyczyną są zbędne konstrukcje nowych obiektów i kolekcjonowanie ich referencji.
Czasem są to niezamierzone rekurencje, których efektem też są kolejne konstrukcje obiektów tymczasowych, które nie mogą zginąć lub pod-obiektów.

0

On ma na mysli cos takiego:

class Main {
void method() {
new Costam(this)
}
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1