Каков максимальный размер кучи по умолчанию для JVM Sun от Java SE 6?
каков максимальный размер кучи по умолчанию для JVM Sun от Java SE 6 (т. е. эквивалентно настройке-Xmx)?
похоже на Java SE 5 с машиной серверного класса,это
меньше 1/4 физической памяти или 1 ГБ.
бонусный вопрос: похоже, что для JVM IBM вы можете задать его
java -verbose:sizes -version
можете ли вы аналогично спросить JVM Sun?
Edit:
Я Во время выполнения.getRuntime().в разделе для подтверждения мин(физической памяти/4, 1г), о которых говорится в Sun documentation.
6 ответов:
java 1.6.0_21 или более поздней версии, или около того...
$ java -XX:+PrintFlagsFinal -version 2>&1 | grep MaxHeapSize uintx MaxHeapSize := 12660904960 {product}похоже, что min (1G) был удален.
или на Windows с помощью findstr
C:\>java -XX:+PrintFlagsFinal -version 2>&1 | findstr MaxHeapSize
можно спросить с некоторым кодом Java:
long maxBytes = Runtime.getRuntime().maxMemory(); System.out.println("Max memory: " + maxBytes / 1024 / 1024 + "M");посмотреть документация.
С JDK, Вы также можете использовать jinfo для подключения к JVM для
<PROCESS_ID>в вопросе и получить значение для MaxHeapSize:jinfo -flag MaxHeapSize <PROCESS_ID>
по состоянию на JDK6U18 ниже приведены конфигурации для размера кучи.
в клиенте виртуальной машины, настройки по умолчанию кучи Java была изменено для повышения производительности современного богатого клиента приложения. Начальный и максимальный размеры кучи больше и настройки связанные с поколенческой сборкой мусора лучше настроены.
максимальный размер кучи по умолчанию составляет половину физической памяти до размера физической памяти 192 мегабайт и в противном случае одна четверть физической памяти в физической памяти 1 гигабайт. Например, если ваш компьютер имеет 128 мегабайт физической памяти, то максимальный размер кучи составляет 64 мегабайта и больше или равен до 1 гигабайта физической памяти приводит к максимальному размеру кучи 256 мегабайты. Максимальный размер кучи фактически не используется JVM, если ваша программа не создает достаточно объектов, чтобы требовать его. Гораздо меньшая сумма, называется начальный размер "кучи", это выделяется во время инициализации JVM. Эта сумма составляет не менее 8 МБ, а в противном случае 1/64 физической объем физической памяти до 1 гигабайта.
Источник:http://www.oracle.com/technetwork/java/javase/6u18-142093.html
один из способов - если у вас установлен jdk , в папке bin есть утилита под названием jconsole(даже visualvm можно использовать). Запустите его и подключитесь к соответствующему процессу java, и вы можете увидеть, какие настройки размера кучи установлены и многие другие детали
при запуске только headless или cli, jConsole может использоваться по локальной сети, Если вы укажете порт для подключения при запуске рассматриваемой службы.
чтобы ответить на этот вопрос, важно, находится ли виртуальная машина Java в режиме клиента или сервера. Можно указать параметры "-клиент" или "-сервер". В противном случае java использует внутренние правила; в основном win32 всегда является клиентом, а Linux всегда сервером, но см. таблицу здесь:
http://docs.oracle.com/javase/6/docs/technotes/guides/vm/server-class.html
Солнца/Оракул jre6u18 врач говорит, что повторный клиент: ВМ получает 1/2 от объема физической памяти, если машина
Sun / Oracle jre6u18 doc говорит re server: то же самое, что и клиент, а затем добавляет запутанный язык: для 32-битной JVM по умолчанию max составляет 1 ГБ, а для 64-битной JVM по умолчанию-32 ГБ. В моем тесте на 64-битной машине linux с 8 ГБ физической Java выделяет 2 ГБ, что составляет 1/4 от физической; на 64-битной машине linux с 128Gb физической Java выделяет 32 ГБ, опять 1/4 от физического.
благодаря этому так пост для руководства меня:
Comments