Java очень большие [закрытые] размеры "кучи"

77
задан j0k 6 March 2013 в 16:54
поделиться

10 ответов

солнце имело itanium 64-разрядный jvm некоторое время, хотя itanium не является популярным направлением. solaris и Linux, 64-разрядный JVMs должен быть тем, чем необходимо быть после.
Некоторые вопросы

1) действительно ли Ваше приложение стабильно?
2) Вы уже протестировали приложение в JVM на 32 бита?
3) он в порядке для выполнения нескольких JVMs на том же поле?

я ожидал бы, что 64-разрядная ОС из окон станет стабильной приблизительно через год или таким образом, но до тех пор, solaris/linux мог бы лучше поставиться.

0
ответ дан anjanb 24 November 2019 в 10:57
поделиться

Макс. память, к которой может обратиться XP, составляет 4 ГБ ( здесь ). Таким образом, Вы не можете хотеть использовать XP для того (используйте OS на 64 бита).

0
ответ дан Milhous 24 November 2019 в 10:57
поделиться

вот статья о gc ОТ одного из Чемпионов Java - http://kirk.blog-city.com/is_your_concurrent_collector_failing_you.htm

Kirk, записи автора "Отправляют мне Ваши журналы GC

, я в настоящее время интересуюсь изучением произведенных журналов GC JVM Sun. Так как эти журналы не содержат бизнес-соответствующей информации, это должны быть опасения простоты по поводу защиты proriatary информация. Все я прошу, чтобы с журналом Вы упомянули ОС, информацию о полной версии для JRE и любые связанные с "кучей"/gc переключатели командной строки, которые Вы установили. Я также хотел бы знать, выполняете ли Вы Grails/Groovey, JRuby, Scala или что-то другое, чем или вдоль Java стороны. Лучшая установка является-Xloggc:. Знайте, что этот журнал не переворачивается, когда он достигает Вашего предела размера ОС. Если я найду что-нибудь интересным, то я буду рад дать Вам очень быстрое резюме в ответ".

1
ответ дан anjanb 24 November 2019 в 10:57
поделиться

Необходимо попытаться выполнить visualgc против приложения. ItВґs, который инструмент визуализации "кучи" thatВґs часть jvmstat загружает в http://java.sun.com/performance/jvmstat/

, Это намного легче, чем чтение журналов GC.

Это быстро помогает Вам понять, как части (поколения) "кучи" работают. В то время как Ваша общая "куча" может составить 10 ГБ, различные части "кучи" будут намного меньше. GCs в части Рая "кучи" являются относительно дешевыми, в то время как полный, GCs в старом поколении являются дорогими. При калибровке "кучи" так, чтобы это Рай было большим и почти никогда не затронуто старое поколение, хорошая стратегия. Это может привести к очень большой полной "куче", но какого черта, если JVM никогда не касается страницы, itВґs просто, виртуальная страница и doesnВґt должны поднять RAM.

1
ответ дан tpgould 24 November 2019 в 10:57
поделиться

Если Вы переключитесь на 64-разрядный, то Вы будете использовать больше памяти. Указатели становятся 8 байтами вместо 4. При создании большого количества объектов, это может быть значимым наблюдением, поскольку каждый объект является ссылкой (указатель).

я недавно выделил 15 ГБ памяти в Java с помощью Sun 1.6 JVM без проблем. Хотя это все только выделяется однажды. Не намного больше памяти выделено или освобождено после начальной суммы. Это было на Linux, но я предполагаю, что JVM Sun будет работать точно также над 64-разрядным Windows.

1
ответ дан Chris de Vries 24 November 2019 в 10:57
поделиться

Я рекомендую также полагать, что взятие "кучи" выводит и видит, где использование памяти может быть улучшено в Вашем приложении и анализе дампа в чем-то такой как ЦИНОВКА Eclipse . Существует несколько статей на странице MAT при начале работы в поиске утечек памяти. Можно использовать jmap для получения дампа с чем-то такой как...

jmap -heap:format=b pid
6
ответ дан jlintz 24 November 2019 в 10:57
поделиться

статья от солнца на java 6 может помочь Вам: http://java.sun.com/developer/technicalArticles/javase/troubleshoot/

1
ответ дан anjanb 24 November 2019 в 10:57
поделиться

12 ГБ не должны быть никакой проблемой с достойной реализацией JVM, такой как Горячая точка Sun. Я был бы совет Вы для использования Параллельного Mark и коллектора Развертки (-XX: + UseConcMarkSweepGC) при использовании VM.Otherwies SUN можно сталкиваться долго, "останавливают мировые" фазы, были все потоки, останавливаются во время GC.

ОС не должна иметь большое значение для производительности GC.

Вам будут нужны, конечно, ОС на 64 бита и машина с достаточным количеством физической RAM.

8
ответ дан kohlerm 24 November 2019 в 10:57
поделиться

У нас есть приложение, для которого мы выделяем 12-16 Гбит, но оно действительно только достигает 8-10 во время нормального функционирования. Мы используем JVM Sun (попробовал IBMs, и это было определенное бедствие, но это просто, возможно, было незнанием с нашей стороны... У меня есть друзья, которые клянутся им - что работа в IBM). Пока Вы даете свое приложение, вдыхая комнату, JVM может обработать большие размеры "кучи" с не слишком много GC. Много 'дополнительной' памяти является ключевым.
Linux почти всегда более стабилен, чем Windows и когда это не стабильно, это - адская партия, легче выяснять почему. Солярис является горным телом также, и Вы получаете DTrace также:) С подобными загрузками, с какой стати Вы использовали бы Vista или XP? Вы просто напрашиваетесь на неприятности. Мы ничего не делаем воображение с параметрическими усилителями GC. Мы действительно устанавливаем минимальное выделение, чтобы быть равными максимуму, таким образом, это постоянно не пытается изменить размеры, но это - он.

15
ответ дан Ichorus 24 November 2019 в 10:57
поделиться

A couple of years ago, I compared JRockit and the Sun JVM for a 12G heap. JRockit won, and Linux hugepages support made our test run 20% faster. YMMV as our test was very processor/memory intensive and was primarily single-threaded.

1
ответ дан 24 November 2019 в 10:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: