Alokacja pamięci java

Pytania i problemy
java
Arman.sh
Arman.sh
5 lat temu

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
5 lat temu

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
5 lat temu

Ź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
5 lat temu

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
5 lat temu

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