różnice między STACK oraz HEAP

Odpowiedz Nowy wątek
2011-08-01 12:41
0

hej, mógłby ktoś wyjaśnić czym się różni STACK od HEAP?

Pozostało 580 znaków

2011-08-01 12:47
0

http://pl.wikipedia.org/wiki/Stos(informatyka)
http://pl.wikipedia.org/wiki/Sterta
(informatyka)
W kontekście javy wszystkie obiekty tworzone przez new tworzysz na stercie. Na stosie lądują jedynie adresy skoków powrotnych po wywołaniu metod i (chyba) prymitywy, bo są przekazywane przez wartość

Pozostało 580 znaków

2011-08-01 14:21
bo
0

@Shalom, chyba nie. Literał

String s=new String("Idę na stos");

idzie tam gdzie deklaruje.

Na pewno na stos? A nie przypadkiem w jakieśtam z góry określone miejsce w pamięci programu na "dane stałe" (przy czym to miejsce może faktycznie być gdzieś na stosie, jeśli zakładamy że dane albo są na stosie albo są na stercie i nie ma danych w miejscu innym niż te 2) - Shalom 2011-08-01 14:36
to jak to w końcu jest z tą pamięcią...Podobno wszystkie obiekty lądują na stercie. Niewątpliwie w tym przypadku również jest tworzony obiekt...Więc dlaczego leci na stos? (jakiś pdf mile widziany :d ) - remigio 2011-08-01 15:08

Pozostało 580 znaków

2011-08-01 15:22
3

Heap jest częścią pamięci gdzie żyją obiekty Javy i to na tej części pamięci pracuje Garbage Collector (utrzyjmuąc ją jak najmniejszą).

Heap - zmienne instancji klasy i obiekty
Stack - zmienne lokalne

Do przechowywania string-ów wykorzystywana jest w Javie String constant pool, któy jest przychowywana w "permgen" heap. Więcej znajdziecie tutaj

String s=new String("Idę na stos");

W takim przypadku Java stworzy obiekt new String na stercie (normalnej nonpool) i zmienna s będzie na nią wskazywać. A dodatkowo "Idę na stos" będzie umieszczona w constatnt pool.

Natomiast sama zmienna referencyjna s (32 lub 64 bity) idzie na stos jeżeli byłaby argumentem metody (do 5 parametrów) lub zmienną lokalną. - Olamagato 2011-08-01 17:10

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