#java #limit #option #ram
#java #управление памятью #ОЗУ #jvm-аргументы
Вопрос:
мы используем Java для нашего проекта www.aerospaceresearch.net/constellation и использовать Java напрямую из удаленной папки java bin.
У нас возникли некоторые проблемы с использованием ОЗУ этой Java, отличающейся в разных ОС и даже 32-и 64-битных версиях. Возможно ли установить верхний предел для использования ОЗУ, чтобы Java выполняла динамическую перегруппировку ОЗУ, чтобы она всегда была ниже 150 МБ, например?
Это действительно помогло бы нам решить некоторые незначительные проблемы и перенести наше приложение на системы с ограниченными возможностями оперативной памяти.
Заранее спасибо, Андреас
Комментарии:
1. «… и использовать Java напрямую из удаленной папки java bin». Да?
2. @T.J. Crowder Я предполагаю, что OP имел в виду, что они установили JDK / JRE, просто разархивировав zip-дистрибутив Oracle zip без запуска каких-либо установщиков.
Ответ №1:
По вашему вопросу трудно сказать, но вы, возможно, ищете -Xmx
опцию в инструменте Sun от Oracle java
, который устанавливает максимальный размер кучи памяти Java.
Для получения подробной информации о различных нестандартных функциях, предлагаемых этой версией java
инструмента (включая несколько, связанных с кучей), введите java -X
в командной строке. Для моей установленной версии это дает мне:
java -X -Выполнение в смешанном режиме Xmixed (по умолчанию) - Только выполнение в интерпретируемом режиме Xint -Xbootclasspath: <каталоги и zip / jar-файлы, разделенные символом:> задайте путь поиска для классов и ресурсов начальной загрузки -Xbootclasspath/a: <каталоги и zip / jar-файлы, разделенные символом:> добавить в конец пути к классу начальной загрузки -Xbootclasspath/p: <каталоги и zip / jar-файлы, разделенные символом:> добавить перед путем к классу bootstrap -Xnoclassgc отключить сборку мусора класса -Xincgc включить инкрементную сборку мусора -Xloggc:<файл> записать состояние GC в файл с отметками времени -Xbatch отключает фоновую компиляцию -Xms<размер> задает начальный размер кучи Java -Xmx<размер> установить максимальный размер кучи Java -Xss<размер> задает размер стека потоков java -Xprof выводит данные профилирования процессора -Xfuture включает самые строгие проверки, ожидая будущего по умолчанию -Xrs уменьшают использование сигналов операционной системы Java / VM (см. Документацию) -Xcheck:jni выполняет дополнительные проверки для функций JNI -Xshare:выкл. не пытайтесь использовать данные общего класса -Xshare: по возможности автоматически использовать данные общего класса (по умолчанию) -Xshare: при включении требуется использовать данные общего класса, иначе сбой. Параметры -X нестандартны и могут быть изменены без предварительного уведомления.
Если вы используете другую реализацию Java, эти параметры могут отличаться; и обратите внимание на предупреждение в конце приведенного выше.
Ответ №2:
Вы могли бы попробовать использовать что-то вроде…
java -Xmx128m BigApp
Но вы можете получить ошибки нехватки памяти, если ваше приложение действительно превысит ограничение кучи в 128 МБ.
[обновление] Что касается 64-разрядной версии, есть специальный параметр, который позволяет 64-разрядным ссылкам занимать меньше места, но я не могу найти его прямо сейчас. Это стандартно для одной из новых JRE (1.6?).
Комментарии:
1. XX: UseCompressedOops уменьшит влияние размера 64-разрядных ссылок
2. Я думаю, вы имели в виду
-Xmx128m
, а не 128 байт.