Alokacja pamięci java

Arman.sh | 2020-10-03 09:59:16 UTC | #1

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 | 2020-10-03 10:02:46 UTC | #2

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 | 2020-10-03 10:08:21 UTC | #3

Ź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 | 2020-10-03 12:08:35 UTC | #4

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 | 2020-11-04 12:03:39 UTC | #5

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