Czy pamięć alokowana w Javie działa tak jak cachowanie w linux, czyli Java zwolni tą pamięci jeśli będzie jej potrzebować?
Czy pamięć alokowana w Javie działa tak jak cachowanie w linux, czyli Java zwolni tą pamięci jeśli będzie jej potrzebować?
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.
Ź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łą?
Wszystko zależy od tego jak ustawisz m.in. parametry Xms oraz Xmx. Temat jest dość skomplikowany.
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.
Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.