Память максимума Java на Windows XP

, лежащий в основе JSON String, является

"{ \"column_name1\":\"value1\",\"column_name2\":\"value2\",\"column_name3\":\"value3\",\"column_name5\":\"value5\"}";

Ниже приведен скрипт для фильтрации JSON и загрузки необходимых данных в Cassandra.

  sqlContext.read.json(rdd).select("column_name1 or fields name in Json", "column_name2","column_name2")
            .write.format("org.apache.spark.sql.cassandra")
            .options(Map("table" -> "Table_name", "keyspace" -> "Key_Space_name"))
            .mode(SaveMode.Append)
            .save()
101
задан Steve Kuo 31 January 2009 в 01:04
поделиться

9 ответов

Следует иметь в виду, что Windows имеет управление виртуальной памятью, и JVM только нужна память, которая является непрерывна в ее адресном пространстве . Так, другие программы, работающие на системе, не должны обязательно влиять на Ваш размер "кучи". Что будет стоять на пути, DLL, который загружается в в Ваше адресное пространство. К сожалению, оптимизация в Windows, которая минимизирует перемещение DLL во время соединения, делает его, более вероятно у Вас будет фрагментированное адресное пространство. Вещи, которые, вероятно, включат к Вашему адресному пространству кроме обычного материала, включают защитное программное обеспечение, программное обеспечение CBT, шпионское ПО и другие формы вредоносного программного обеспечения. Вероятными причинами различий являются различные патчи безопасности, C версии среды выполнения, и т.д. Драйверы устройств и другие биты ядра имеют свое собственное адресное пространство (другие 2 ГБ 4 ГБ 32-разрядного пространства).

Вы могли попытка, проходящая Вашу привязку DLL в Вашем процессе JVM и взгляде на попытку повторно основывать Ваш DLL в к более компактному адресному пространству. Не забава, но если Вы являетесь отчаянными...

, С другой стороны, можно просто переключиться на 64-разрядный Windows и 64-разрядную JVM. Несмотря на то, что предложили другие, в то время как это уничтожит больше RAM, Вы будете иметь очень [еще 112] непрерывное виртуальное адресное пространство, и выделение 2 ГБ непрерывно было бы тривиально.

121
ответ дан Christopher Smith 5 November 2019 в 11:42
поделиться

Это имеет отношение к непрерывной памяти.

Вот некоторая информация, которую я нашел онлайн для кого-то просящего что прежде, предположительно, от "бога VM":

причина нам нужен непрерывный регион памяти для "кучи", то, что у нас есть набор структур данных стороны, которые индексируются (масштабированными) смещениями от запуска "кучи". Например, мы отслеживаем объектные ссылочные обновления с "массивом метки карты", который имеет один байт для каждого 512 байтов "кучи". Когда мы храним ссылку в "куче", мы должны отметить соответствующий байт в массиве метки карты. Мы исправляемся, смещают адрес назначения хранилища и использования, которые для индексации карты отмечают массив. Забава обращаясь к арифметическим играм, которые Вы не можете сделать в Java, до которого Вы добираетесь (имеют к :-) игра в C++.

Обычно мы не испытываем затруднения при получении скромных непрерывных регионов (приблизительно до 1.5 ГБ на Windohs, приблизительно до 3.8 ГБ на Солярисе. YMMV.). На Windohs проблема состоит главным образом в том, что существуют некоторые библиотеки, которые загружаются, прежде чем JVM запускает, которые разбивают адресное пространство. Используя/3GB переключатель не будет повторно основывать те библиотеки, таким образом, они будут все еще проблемой для нас.

Мы знаем, как сделать разделенную на блоки "кучу", но были бы немного служебные к использованию их. У нас есть больше запросов на более быстрое управление хранением, чем мы делаем для большей "кучи" в 32-разрядной JVM. Если Вы действительно хотите большую "кучу", переключаетесь на 64-разрядную JVM. Нам все еще нужна непрерывная память, но намного легче войти в 64-разрядное адресное пространство.

50
ответ дан Uri 5 November 2019 в 11:42
поделиться

Пределы размера "кучи" Java для Windows:

  • максимум возможный размер "кучи" на 32-разрядном Java: 1,8 ГБ
  • рекомендовали предел размера "кучи" на 32-разрядный Java: 1,5 ГБ (или 1,8 ГБ с/3GB опцией)

Это не помогает Вам получающий большую "кучу" Java, но теперь Вы знаете, что не можете пойти вне этих значений.

19
ответ дан MicSim 5 November 2019 в 11:42
поделиться

Oracle JRockit, который может обработать "кучу", состоящую из нескольких несмежных участков, может иметь размер "кучи" Java 2,85 ГБ в Windows 2003/XP с переключателем/3GB. Кажется, что фрагментация может оказать настоящее влияние на то, насколько большой "куча" Java может быть.

10
ответ дан Kire Haglin 5 November 2019 в 11:42
поделиться

JVM нужна непрерывная память и в зависимости от того, что еще работает, что работало прежде, и как окна имеют управляемую память, можно быть в состоянии получить до 1.4 ГБ непрерывной памяти. Я думаю, что Windows на 64 бита позволит большую "кучу".

6
ответ дан James A. N. Stauffer 5 November 2019 в 11:42
поделиться

JVM Sun нужна непрерывная память. Таким образом, максимальную сумму доступной памяти диктует фрагментация памяти. Особенно dlls драйвера имеют тенденцию фрагментировать память при загрузке в некоторый предопределенный базовый адрес. Таким образом, Ваши аппаратные средства и его драйверы определяют, сколько памяти можно добраться.

Два источника для этого с операторами от инженеров Sun: форум блог

, Возможно, другая JVM? Вы попробовали Гармония ? Я думаю, что они запланировали позволить ненепрерывную память.

6
ответ дан the.duckman 5 November 2019 в 11:42
поделиться

Я думаю, что это имеет больше, чтобы сделать с тем, как Windows настроен, как подсказал этим ответом: Java-Xmx Опция

еще Некоторое тестирование: Я смог выделить 1300 МБ на старой машине Windows XP только с 768 МБ физическая RAM (плюс виртуальная память). На моей машине RAM на 2 ГБ я могу только получить 1220 МБ. На различных других корпоративных машинах (с более старым Windows XP) я смог получить 1400 МБ. Машина с пределом 1220 МБ является довольно новой (просто купленный у Dell), поэтому возможно, это имеет более новый (и более чрезмерно увеличенный в размерах) Windows и DLLs (это выполняет Window XP Pro Версия 2002 SP2).

3
ответ дан Steve Kuo 5 November 2019 в 11:42
поделиться

JDK/JRE солнца нужен непрерывный объем памяти при выделении огромного блока.

ОС и начальные приложения имеют тенденцию выделять остатки во время загрузки, которая фрагментирует доступную RAM. Если непрерывный блок не доступен, JDK SUN не может использовать его. JRockit от BEA (полученный Oracle) может выделить память от частей.

1
ответ дан anjanb 5 November 2019 в 11:42
поделиться

Во-первых, использование файла подкачки, когда у Вас есть 4 ГБ RAM, бесполезно. Windows не может получить доступ больше чем к 4 ГБ (на самом деле, меньше из-за дыр памяти), таким образом, файл подкачки не используется.

111-секундный, адресное пространство разделяется в 2, половина для ядра, половина для непривилегированного режима. При необходимости в большем количестве RAM для использования приложений/3GB опция в boot.ini (удостоверьтесь, что java.exe отмечен как "большой адрес, знающий" (Google для большего количества информации).

В-третьих, я думаю, что Вы не можете выделить полных 2 ГБ адресного пространства, потому что Java тратит впустую некоторую память внутренне (для потоков, JIT-компилятора, инициализации VM, и т.д.). Используйте переключатель/3GB для больше.

-1
ответ дан user17544 5 November 2019 в 11:42
поделиться
Другие вопросы по тегам:

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