Jak odnieść się do zmiennej w innej metodzie?

Odpowiedz Nowy wątek
2015-01-21 00:22
Wielki Orzeł
0

Czy mogę się jakoś odwołać do nGracze?

public void nowiGracze() {
final List<String> nGracze= new ArrayList<String>(6);
        nGracze.add(g1.toString());
                nGracze.add(g2.toString());
                nGracze.add(g3.toString());
                nGracze.add(g4.toString());
                nGracze.add(g5.toString());
                nGracze.add(g6.toString());

                for (String g : nGracze) {
                    if (g == null) nGracze.remove(g);
                }
}
Chodzi Ci o odwołanie do listy? - Sebastiano 2015-01-21 00:25

Pozostało 580 znaków

2015-01-21 00:33
0

No to by musiało być pole klasy na przykład.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2015-01-21 00:39
0

Obiekty bedace zmiennymi lokalnymi, ktore nie wyciekaja poza metode rodza sie i umieraja na stosie. Polecam zaglebic sie w roznice pomiedzy stosem i sterta.

Obiekty zawsze są tworzone na stercie, a jedynie niektóre referencje na stosie. Różnicę widać gdy tworzymy klasę anonimową w metodzie i używamy zmiennej w niej użytej. Wtedy musi być oznaczona jako final, bo referencja zginie na stosie, ale jako że zadeklarowaliśmy że do końca jej życia będzie miała ten sam obiekt to po prostu pobieramy go po adresie. Taki oszukańczy myk. - krzysiek050 2015-01-21 11:24
@krzysiek050 w trybie interpretowanym - tak. Ale co z escape analysis w hotspotowym JIT? Gdyby wszystkie lokalnie żyjące obiekty tworzone były na stercie, bardzo szybko uroslyby rozmiary TLAB, nie mówiąc już o gc pressure. Hotspot posiada wiele ciekawych optymalizacji, wprowadzanych na poziomie kompilatora (większość najciekawszych siedzi w C2) - wojciech.kudla 2015-01-21 12:21
Fajnie by było. Tylko jest gdzieś taka optymalizacja w Javie/JVM opisana i podane są jej warunki? A co w takim razie z tworzeniem instancji obiektów w pętli? Mogą nie wyciec, ale wtedy stos długo nie wytrzyma. Stąd pierwsze pytanie. - Olamagato 2015-01-21 18:43
Tak jak wynika to z mojego pierwszego komentarza - to zalezy (co robi kod). W przypadku, ktory opisujesz alokacja nastapi w TLAB. Jesli tworzona jest niewielka ilosc obiektow o relatywnie prostej strukturze, wtedy w ramach escape analysis powinnismy zaobserwowac object explosion. http://docs.oracle.com/javase[...]cements-7.html#escapeAnalysis http://blogs.lmax.com/staff-b[...]13/12/30/jvm-escape-analysis/ http://www.ibm.com/developerw[...]library/j-jtp09275/index.html http://www.javaspecialists.eu/archive/Issue179.html - wojciech.kudla 2015-01-21 19:18

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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