Alokacja pamięci java

Pytania i problemy
java
Arman.sh
Arman.sh

Czy pamięć alokowana w Javie działa tak jak cachowanie w linux, czyli Java zwolni tą pamięci jeśli będzie jej potrzebować?

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Cache w Linuksie jest używane do całkiem innych rzeczy. Pamięć faktycznie alokowana przez maszynę wirtualną javy, to pamięć niedostępna dla innych aplikacji.

Istnieje jednak zachowanie polegające na dynamicznym alokowaniu pamięci (gdy Xmx>Xms) i w tym przypadku można powiedzieć, że JVM będzie "oddawać pamięć do systemu". Dzieje się tak w przypadku, kiedy zużycie pamięci przez aplikacje spadło względem poprzedniego okresu.

Niemniej, porównanie do cache zarządzanego przez kernel linuksa to by było spore nadużycie.

Arman.sh
Arman.sh

Źle mnie zrozumiałeś, chodziło mi o to czy Java zajmuje tą pamięci żeby jej nie brakło ale nie koniecznie zużywa całą?

Nieznajomy11
Nieznajomy11 Moderator forum.lvlup.pro

Wszystko zależy od tego jak ustawisz m.in. parametry Xms oraz Xmx. Temat jest dość skomplikowany.

image|690x286

Odpowiedź na pytanie zależy też od tego, o którą dokładnie pamięć chodzi. Jeśli chodzi o to jak wygląda to z poziomu JVM, to pamięć może być alokowana w systemie, ale niekoniecznie będą tam jakieś zapisane dane (więc w teorii jest to pamięć wolna i dostępna). Niemniej niezależnie czy one tam są, ta pamięć nie jest dostępna dla innych aplikacji.

system
system

Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.