Dowiedziałem się, że pola klasy są przechowywane w stercie, ale gdzie są przechowywane metody? W kupie czy gdzieś indziej? czy są inline?Gdzie są metody przechowywane w pamięci?
Odpowiedz
Metody są przechowywane gdzieś w pamięci. Zauważ, że metody są dla klasy, a nie dla każdej instancji. Zwykle liczba metod nie zmienia się w czasie działania programu (są wyjątki). W tradycyjnych modelach miejsce, w którym żyją metody, nazywa się "segmentem kodu". W sieci .net jest to trudniejsze: metody początkowo znajdują się w złożeniu i są mapowane do pamięci procesu. Tam kompilator just-in-time tworzy drugą kopię niektórych metod w natywnym kodzie; ta kopia zostanie wykonana. Kod JIT może zostać utworzony i usunięty kilka razy w czasie wykonywania, więc praktyczne jest postrzeganie go również jako żyjącego "w stadzie".
Metody klas są przechowywane razem z całym kodem w dedykowanym segmencie pamięci przeznaczonym specjalnie do przechowywania kodu. Kod każdej metody jest zapisywany jeden raz.
- 1. Gdzie przechowywane są zmienne ulotne?
- 2. Gdzie są przechowywane makra?
- 3. Gdzie przechowywane są zmienne javascript
- 4. Gdzie przechowywane są dane const?
- 5. Gdzie są przechowywane uprawnienia w systemie Android?
- 6. gdzie przechowywane są rozszerzone atrybuty?
- 7. Gdzie przechowywane są pliki TempData?
- 8. Gdzie są przechowywane zarejestrowane serwery?
- 9. Gdzie są zapisane makra przechowywane w Notepad ++?
- 10. Gdzie wartości r przechowywane są w C++?
- 11. Gdzie są przechowywane zmienne w Pythonie?
- 12. Gdzie są przechowywane projekty w Eclipse?
- 13. Gdzie są przechowywane vary w Nodejs?
- 14. Gdzie są przechowywane konfiguracje debugowania Eclipse CDT?
- 15. Gdzie przechowywane są sole hasła laravel?
- 16. Gdzie są przechowywane obrazy docker przez boot2docker?
- 17. Gdzie są przechowywane pakiety systemowe Java?
- 18. Gdzie są przechowywane statyczne bloki CMS Magento?
- 19. Gdzie przechowywane są dane dziennika CloudWatch?
- 20. Gdzie są przechowywane recenzje produktów magento 1.5?
- 21. Gdzie są przechowywane ustawienia związane z JNLP
- 22. Ustaw opcje .... gdzie są one przechowywane
- 23. Gdzie są nowe metody?
- 24. Gdzie są przechowywane pliki logcat systemu Android?
- 25. Gdzie są przechowywane obrazy emulatora Androida?
- 26. Gdzie są zmienne w zamknięciu przechowywane - stos lub sterty?
- 27. W jaki sposób zmienne są przechowywane w pamięci w rekursji?
- 28. Gdzie w DB Wordpressa przechowywane są zadania wp_cron?
- 29. Gdzie są przechowywane zmienne uniwersalne w powłoce ryby?
- 30. Gdzie są przechowywane pliki cookie w macierzystej przeglądarce Androida?
+1 Uwielbiam wyjaśnienia ... –
Nie powiedziałem "przed klasy", ale "** za ** - klasa". Metody są na klasę: oznacza to, że każda metoda istnieje tylko raz dla klasy. Różne instancje wciąż mają te same metody. Atrybuty/właściwości są na wystąpienie: atrybut istnieje dla każdej instancji, tj. Różne instancje mają różne wartości dla atrybutu. –
@Martin: Mam jedną obawę dotyczącą tego. Nie rozumiem, dlaczego kod JIT tworzył kopię za każdym razem, gdy wykonywana była ta metoda. Powiedziałeś już, że metody są w klasie i ja w 100% się z tym zgodziłem, ale wierzę również, że kiedykolwiek metoda jest nazywana, to odnosi się do tej samej rzeczywistej metody bez kopiowania, ponieważ jeśli istnieje jakiś rodzaj kopii (to co powiedziałeś), a następnie w jaki sposób można zastosować metodę na klasę. – Singleton