Stos, sterta oraz zmienne statyczne

0

Nie do końca mogę zrozumieć jedno zagadnienie. Otóż to co wiem :

  • Na stercie przechowywane są instancje klas, i tam pracuje GC
  • Na stosie mamy wywołania metod i zmienne lokalne

Ale problem pojawia się wraz ze słowem "static". Może powiem jak ja to rozumiem.

Jeśli klasa zawiera pole statyczne to przynależy ono ściśle do klasy a nie do obiektu. Ale w takim razie gdzie w pamięci jest przechowywane takie pole?
Nie może być na stercie, bo nie należy do żadnego obiektu. Na stosie? No nie bardzo, zmienna lokalna to to nie jest , nie umiera po zakończeniu metody.

Wyczytałem w internecie coś takiego:

Zmienna statyczna zajmuje miejsce w pamięci tylko raz w obszarze klasy co pomaga zaoszczędzić sporo pamięci a sam program jest bardziej efektywny.

W obszarze klasy? Nie rozumiem.

1

Jeszcze jest trzeci obszar: Obszar Kodu - tam gdzie jest, skompilowany, załadowany kod programu javy; metody (i zmienne) statyczne, jako przynależące do klasy, są zapisane w pamieci tam gdzie i tej klasy bytecode.

1

Poniżej masz co nieco napisane o tej części pamięci w której znajdują się zmienne statyczne:
https://blogs.oracle.com/jonthecollector/presenting-the-permanent-generation

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