/ / Java Heap Distribution Concept Query - Java, java-ee, памет, управление на паметта

Java Heap Разпределение Concept Query - Java, java-ee, памет, управление на паметта

Използвам под параметрите на GC паметта:

export MEM_OPTS = "- Xmx2900m -Xms2900m -XX: NewSize = 786m -XX: MaxNewSize = 786m -XX: + UseTLAB -XX: MaxPermSize = 128m"

Аз съм с 32-битов JVM.My сървър RAM е 10 GB.

От сайта на Oracle имам

Защо не мога да получа по-голяма купчина с 32-битовия JVM?

Максималната теоретична граница на куп за 32-битовия JVM е 4G. Поради различни допълнителни ограничения, като например наличен суап, използване на адресното пространство на ядрото, фрагментация на паметта и натоварване с VM, на практика лимитът може да бъде много по-нисък, На повечето модерни 32-битови Windows системиМаксималният размер на купчината ще варира от 1.4G до 1.6G. При 32-битовите ядра на Solaris адресното пространство е ограничено до 2G. При 64-битови операционни системи, работещи с 32-битова VM, максималният размер на купчината може да бъде по-висок, приближавайки се към 4G на много системи Solaris. От Java SE 6, функцията boot.ini на Windows / 3GB не се поддържа. Ако приложението ви изисква много голяма купчина, трябва да използвате 64-битова виртуална машина на версия на операционната система, която поддържа 64-битови приложения. За подробности вижте Java System Supported System Configurations.

ОК. Сега ви позволява предполагам моят 32-битов сървър може да отнеме 3.2 GB.

-Xmx is the total heap memory
-XX:NewSize / -XX:MaxNewSize is the range of the size of the new generation inside that heap
the difference is the range of the size of the old generation
-XX:PermSize / -XX:MaxPermSize is the range of the size of the permanent generation, which is the non-heap memory

Според това, 3.2 GB не трябва да включва PermSize, тъй като това не е съдържание на купчина.

Кажи ми, ако греша.

Мога да разделя 3.2 GB на Xmx и NewSize. Нали?

Отговори:

1 за отговор № 1

NewSize е част от максималния размер на купчината. Трябва да е по-малък.

Бих използвал 64-битовия JVM, ако имате Java 6, тъй като това ще направи живота ви по-лесен. ;) Освен ако не се налага да използвате 32-битови библиотеки за споделяне, има малко надолу.

BTW -XX:+UseTLAB е по подразбиране.