Jestem po prostu ciekawy.
Załóżmy, że definiuję odwołanie wewnątrz pętli while/for.JAVA: odwołanie zdefiniowane w pętli
czy JVM definiuje to odwołanie w każdej iteracji, czy jest zoptymalizowane tak, aby zdefiniować je tylko raz?
Jestem po prostu ciekawy.
Załóżmy, że definiuję odwołanie wewnątrz pętli while/for.JAVA: odwołanie zdefiniowane w pętli
czy JVM definiuje to odwołanie w każdej iteracji, czy jest zoptymalizowane tak, aby zdefiniować je tylko raz?
Definiuje to za każdym razem i jest ograniczone do tej samej iteracji pętli.
Po wykonaniu pętli iteracja kwalifikuje się do GC.
Jak skomentował Louis Wasserman, zmienna zostanie ponownie zaimplementowana za każdym razem, ale pamięć zostanie prawdopodobnie ponownie wykorzystana.
dziękuję. dobrze wiedzieć – socksocket
Nie ma za co. – kosa
Nie kwalifikuje się do GC. Szczelina stosu będzie istniała do czasu ponownego wykorzystania przez kolejną zmienną zadeklarowaną po pętli, jeśli jest, inaczej, dopóki metoda nie zostanie zakończona. Nie ma instrukcji JVM odpowiadającej nawiasowi zamykającemu pętli, więc nie ma możliwości, aby JVM dowiedziała się, że gniazdo nie jest już używane. – EJP
Jest zdefiniowany za każdym razem. Nie ma na to optymalizacji (według mojej wiedzy).
-określa odniesienia Everytime z iteracji pętli, lecz zakres odniesienia jest dołączony tylko do tej iteracji.
- Uważają, że masz ogłosił odwołanie poza pętlą, ale obiekt przypisać do niego wewnątrz pętla, a następnie odniesienie pozostaje taka sama, ale odwoływać się nowy obiekt tego typu w każdym iteracja.
Odwołanie jest definiowane w każdej iteracji. Po zoptymalizowaniu kodu do kodu natywnego można go przenieść poza pętlę, więc nie musi mieć wpływu na wydajność. Jeśli ustawisz to odniesienie do obiektu new
za każdym razem, może on utworzyć nowy obiekt w każdej iteracji, chyba że tworzenie tego obiektu zostanie również zoptymalizowane.
Co masz na myśli, "zdefiniuj"? To naprawdę zależy od tego, co masz na myśli. Zmienna będzie ponownie inicjowana za każdym razem, ale pamięć zostanie prawdopodobnie ponownie wykorzystana. –
Co masz na myśli przez "zdefiniowanie odniesienia"? Ściśle mówiąc, odniesienie jest wartością zmiennej, co jest dalekie od alokacji obiektu. Te dwie interpretacje mają bardzo różne odpowiedzi. –