Narzędzia użytkownika

Narzędzia witryny


java_-_zarzadzanie_pamiecia

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Poprzednia rewizja po obu stronach Poprzednia wersja
Nowa wersja
Poprzednia wersja
java_-_zarzadzanie_pamiecia [2017/07/12 12:46]
marcinc
java_-_zarzadzanie_pamiecia [2021/03/25 09:42] (aktualna)
marcinc [Serwwer używa 100% pamięci!]
Linia 1: Linia 1:
 ====== Java - zarządzanie pamięcią ====== ====== Java - zarządzanie pamięcią ======
  
-W tej sekcji wyjaśniamy jak Java zarządza pamięcią. Pozwoli to zrozumieć zasady i mechanizmy alokowania i zwalniania pamięci przez JVM.+W tej sekcji wyjaśniamy jak Java zarządza pamięcią. Pozwoli to zrozumieć zasady i mechanizmy alokowania i zwalniania pamięci przez JVM (Java Virtual Machine).
  
 ===== Rodzaje pamięci ===== ===== Rodzaje pamięci =====
  
-Java (JVM) korzysta z kilku rodzajów pamięci, gdzie m.in. przechowuje kod programu, obiekty //Permament Generations//​ oraz sterta na zwykłe ​obiekty. Sprawdzając użycie pamięci na serwerze poleceniem typu ///mem// **zawsze** sprawdza się ilość wolnej pamięci w obszarze sterty (heap) dla zwykłych obiektów, a nie całość przydzielonej pamięci dla procesu Java.+Java (JVM) korzysta z dwóch głównych ​rodzajów pamięci: Heap (sterta na obiekty) i MetaSpace (dane klas i inne statyczne dane). Sprawdzając użycie pamięci na serwerze poleceniem typu ///mem// **zawsze** sprawdza się ilość wolnej pamięci w obszarze sterty (heap) dla zwykłych obiektów, a nie całość przydzielonej pamięci dla procesu Java. 
  
 ===== Alokowanie i zwalnianie pamięci ===== ===== Alokowanie i zwalnianie pamięci =====
Linia 15: Linia 15:
 ==== Im więcej RAM, tym większe zużycie ==== ==== Im więcej RAM, tym większe zużycie ====
  
-Jak to zostało już wspomniane, Java zwalnia pamięć gdy jej potrzebuje w innym miejscu. Często zdarza się tak, że im więcej RAM serwer ma przypisane, tym większe jego zużycie. Np. dla serwera 1500MB RAM po starcie zużycie wynosi ok 100MB, gdy dla serwera 8000MB po starcie nierzadko widać 3000MB. Dlaczego? Java nie usuwa z pamięci śmieci, gdy pamięci jest pod dostatkiem.+Jak to zostało już wspomniane, Java zwalnia pamięć gdy jej potrzebuje w innym miejscu. Często zdarza się tak, że im więcej RAM serwer ma przypisane, tym większe jego zużycie. Np. dla serwera 1500MB RAM po starcie zużycie wynosi ok 1000MB, gdy dla serwera 8000MB po starcie nierzadko widać 3000MB. Dlaczego? Java nie usuwa z pamięci śmieci, gdy pamięci jest pod dostatkiem. Hosting ustawia domyślnie moment uruchomienia się Garbage Collector na 1/2 przydziału pamięci, po to aby zwiększyć wydajność serwerów Minecraft. Java nie zacznie sprzątać (zwalniać) pamięci, jeżeli nie przekroczy połowy przydziały pamięci (dla 1500MB to 750MB). 
 + 
 +==== Serwer używa 100% pamięci! ==== 
 +Tak ma być. Tylko wtedy pamięć jest optymalnie wykorzystywana. Hosting nie zwalnia sztucznie pamięci, bo to jest pamięć, którą klient zakupił i serwer powinien ją wykorzystywać.
  
 ==== Objawy zwalniania i braku pamięci ==== ==== Objawy zwalniania i braku pamięci ====
Linia 23: Linia 26:
 ==== Przydział pamięci dla serwera przez Hosting ==== ==== Przydział pamięci dla serwera przez Hosting ====
  
-//​TitanAXE//​ podchodzi profesjonalnie do aspektów przydzielania zasobów serwerom, tak aby każdy serwer dysponował zasobami, za które jego właściciel zapłacił. Dlatego każdemu serwerowi przydzielamy dokładnie tyle pamięci, ile zostało zakupione. Dodatkowo, VPS, który obsługuje dany serwer, posiada zawsze 250MB zapasu, na system operacyjny. W rzeczywistości system ten potrzebuje maksymalnie 50MB, ale dokładamy te 200MB na wszelki wypadek, także po to, żeby serwer nie wyłączał się nagle, po delikatnym przekroczeniu limitu pamięci. Widać to szczególnie dobrze przy serwerach Minecraft z limitem pamięci 500MB. Da się zaalokować do ok. 750MB RAM i dopiero wtedy serwer się wyłączy. +//​TitanAXE//​ podchodzi profesjonalnie do aspektów przydzielania zasobów serwerom, tak aby każdy serwer dysponował zasobami, za które jego właściciel zapłacił. Dlatego każdemu serwerowi przydzielamy dokładnie tyle pamięci, ile zostało zakupione. Dodatkowo, VPS, który obsługuje dany serwer, posiada zawsze 250MB zapasu, na system operacyjny. W rzeczywistości system ten potrzebuje maksymalnie 50MB, ale dokładamy te ok. 250MB na wszelki wypadek, także po to, żeby serwer nie wyłączał się nagle, po delikatnym przekroczeniu limitu pamięci. Widać to szczególnie dobrze przy serwerach Minecraft z limitem pamięci 500MB. Da się zaalokować do ok. 750MB RAM i dopiero wtedy serwer się zrestartuje.
- +
-===== Więcej informacji o modelu pamięci Java ===== +
- +
-Przeczytaj więcej o zarządzaniu pamięcią:+
  
-  * [[https://​docs.oracle.com/​cd/​E13150_01/​jrockit_jvm/​jrockit/​geninfo/​diagnos/​garbage_collect.html]] 
-  * [[http://​www.journaldev.com/​2856/​java-jvm-memory-model-memory-management-in-java]] 
-  * [[http://​bottega.com.pl/​pdf/​materialy/​jvm/​jvm2.pdf]] 
-  * [[http://​justdiscoverit.blogspot.com/​2014/​04/​garbage-collector.html]] 
  
  
java_-_zarzadzanie_pamiecia.1499856377.txt.gz · ostatnio zmienione: 2017/07/12 12:46 przez marcinc