2012-06-07 14 views
5

Powiel możliwe:
static allocation in java - heap, stack and permanent generationgdzie pamięć jest przydzielana, gdy deklarujemy statyczne?

Jej mały zamęt ... określającą statyczny do klasy, metody i variables.In to trzy przypadki, gdzie w ten sposób dedykowanych pamięci. ? Mój szef zna C, mówi, że tylko zmienne znajdują się w pamięci sterty, a reszta (klasy statyczne i metody statyczne) pozostaną w pamięci głównej. czy to jest ta? jakiekolwiek wyjaśnienie.

jeszcze jeden w Androidzie za pomocą metod statycznych i statycznych to najlepsza praktyka?

+0

Duplikat: [http://stackoverflow.com/q/405364/1073063](http://stackoverflow.com/q/405364/1073063) i [http://stackoverflow.com/q/6569557/1073063 ] (http://stackoverflow.com/q/6569557/1073063). Moderator: Przykro mi, podłączyłem się do niewłaściwego pytania, gdy oznaczyłem to. – Pablo

Odpowiedz

5

Spróbuj tego,

static members are stored in Method Area. 

instancje klasy i tablice są przechowywane w pamięci sterty. Pamięć sterty jest również nazywana pamięcią wspólną. Ponieważ jest to miejsce, w którym wiele wątków będzie dzielić te same dane.

Non-heap Memory 

Składa się z ‘Method Area’ i innej pamięci wymaganej do wewnętrznego przetwarzania. Tak więc głównym graczem jest "obszar metod".

Jak podano w ostatniej linii, obszar metody jest częścią pamięci poza stosem (Specjalny obszar sterty). Przechowuje struktury klasy, kod dla metod i konstruktorów. Struktura na klasy oznacza stałe czasu wykonywania i static fields.

Powyższe trzy elementy (pamięć sterty, pamięć niepodzielona i obszar metody) są głównym żargonem dotyczącym pamięci i maszyny JVM.

Instancje klasy i tablice są przechowywane w pamięci sterty. Pamięć sterty jest również nazywana pamięcią wspólną. Ponieważ jest to miejsce, w którym wiele wątków będzie dzielić te same dane.

+0

Nie. Pola i stałe statyczne są przechowywane w obiekcie klasy, który znajduje się w stercie. – EJP

3

Zmienne statyczne są zapisywane w tym samym miejscu co deklaracja klas (metody i atrybuty itp.). 1). Klasy (ładowane przez programy ładujące klasy) przechodzą w specjalnym obszarze na stercie o nazwie Permanent Generation, a pole statyczne również idzie w to samo miejsce, co wspólne dla każdej instancji klasy. Aby uzyskać więcej informacji:

see this answer

Powiązane problemy