<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>www.rusinov.ie (Записи о eclipse)</title><link>https://www.rusinov.ie/</link><description></description><atom:link href="/ru/tags/eclipse.xml" rel="self" type="application/rss+xml"></atom:link><language>ru</language><copyright>Contents © 2026 &lt;a href="mailto:vladimir.rusinov@gmail.com"&gt;Vladimir Rusinov&lt;/a&gt; </copyright><lastBuildDate>Fri, 06 Feb 2026 07:19:27 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>7 наиболее распространенных ошибок при установке ограничений памяти Java</title><link>/ru/posts/2010/7-java-heap/</link><dc:creator>Vladimir Rusinov</dc:creator><description>&lt;div dir="ltr" style="text-align: left;"&gt;Оригинал: "&lt;a href="http://javahowto.blogspot.com/2006/06/6-common-errors-in-setting-java-heap.html"&gt;6 Common Errors in Setting Java Heap Size&lt;/a&gt;" (кажется, автор несколько ошибся в подсчетах)&lt;br&gt;Перевод: &lt;a href="http://greenmice.info/ru/node/143"&gt;Владимир Русинов&lt;/a&gt;&lt;br&gt;&lt;br&gt;Для установки размера кучи java (heap) используются две опции: -Xmx для установки максимального размера и -Xms для начального(минимального) размера. Вот наиболее часто встречающиеся ошибки их использования:&lt;br&gt;&lt;br&gt;1. &lt;b&gt;Отсутствие m, M, g или G в конце (регистр не имеет значения).&lt;/b&gt; Например:&lt;br&gt;&lt;br&gt;&lt;pre class="brush: bash"&gt;java -Xmx128 BigApp&lt;br&gt;java.lang.OutOfMemoryError: Java heap space&lt;br&gt;&lt;/pre&gt;&lt;br&gt;Правильная команда должна быть такой: &lt;br&gt;&lt;pre class="brush: bash"&gt;java -Xmx128m BigApp&lt;/pre&gt;. Строго говоря, -Xmx128 корректная настройка для очень маленьких приложений (например HelloWorld), но я думаю в большинстве случаев все-таки имелось в виду -Xmx128m.&lt;br&gt;&lt;a name="more"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;2. &lt;b&gt;Лишний пробел или использование =.&lt;/b&gt; Например:&lt;br&gt;&lt;br&gt;&lt;pre class="brush: bash"&gt;java -Xmx 128m BigApp&lt;br&gt;Invalid maximum heap size: -Xmx&lt;br&gt;Could not create the Java virtual machine.&lt;br&gt;&lt;/pre&gt;&lt;br&gt;&lt;pre class="brush: bash"&gt;java -Xmx=512m HelloWorld&lt;br&gt;Invalid maximum heap size: -Xmx=512m&lt;br&gt;Could not create the Java virtual machine.&lt;br&gt;&lt;/pre&gt;&lt;br&gt;Правильная команда должна иметь вид &lt;br&gt;&lt;pre class="brush: bash"&gt;java -Xmx128m BigApp&lt;/pre&gt;, без пробела или знака =. -X опции ведут себя отлично от -Dключ=значение опций, в которых используется =.&lt;br&gt;&lt;br&gt;3. &lt;b&gt;Установка только -Xms в значение большее чем максимальный размер кучи по умолчанию (64m).&lt;/b&gt; Похоже что минимальный размер кучи по умолчанию равен 0.&lt;br&gt;Пример:&lt;br&gt;&lt;pre class="brush: bash"&gt;java -Xms128m BigApp&lt;br&gt;Error occurred during initialization of VM&lt;br&gt;Incompatible initial and maximum heap sizes specified&lt;br&gt;&lt;/pre&gt;&lt;br&gt;Корректная команда должна выглядеть так: &lt;br&gt;&lt;pre class="brush: bash"&gt;java -Xms128m -Xmx128m BigApp&lt;/pre&gt;. Установить минимальный и максимальный размер равными - хорошая идея. В любом случае, минимальное значение не должно превышать максимальное.&lt;br&gt;&lt;br&gt;4. &lt;b&gt;Установка размера кучи большего чем объем доступной физической памяти.&lt;/b&gt; Пример:&lt;br&gt;&lt;pre class="brush: bash"&gt;java -Xmx2g BigApp&lt;br&gt;Error occurred during initialization of VM&lt;br&gt;Could not reserve enough space for object heap&lt;br&gt;Could not create the Java virtual machine.&lt;br&gt;&lt;/pre&gt;&lt;br&gt;Устанавливайте размер кучи меньше чем размер физической памяти: &lt;br&gt;&lt;pre class="brush: bash"&gt;java -Xmx1g BigApp&lt;/pre&gt;&lt;br&gt;5. &lt;b&gt;Использование mb в качестве единицы измерения, вместо m или M.&lt;/b&gt;&lt;br&gt;&lt;pre class="brush: bash"&gt;java -Xms256mb -Xmx256mb BigApp&lt;br&gt;Invalid initial heap size: -Xms256mb&lt;br&gt;Could not create the Java virtual machine.&lt;br&gt;&lt;/pre&gt;&lt;br&gt;6. &lt;b&gt;Установка размера кучи в большее значение, чем позволяет JVM.&lt;/b&gt; Пример:&lt;br&gt;&lt;pre class="brush: bash"&gt;java -Xmx256g BigApp&lt;br&gt;Invalid maximum heap size: -Xmx256g&lt;br&gt;The specified size exceeds the maximum representable size.&lt;br&gt;Could not create the Java virtual machine.&lt;br&gt;&lt;/pre&gt;&lt;br&gt;Укажите размер поменьше: &lt;br&gt;&lt;pre class="brush: bash"&gt;java -Xmx256m BigApp&lt;/pre&gt;&lt;br&gt;7. &lt;b&gt;Указание дробного чиста в качестве значения&lt;/b&gt;. Пример:&lt;br&gt;&lt;pre class="brush: bash"&gt;java -Xmx0.9g BigApp&lt;br&gt;Invalid maximum heap size: -Xmx0.9g&lt;br&gt;Could not create the Java virtual machine.&lt;br&gt;&lt;/pre&gt;&lt;br&gt;Правильная команда должна выглядеть так:&lt;br&gt;&lt;pre class="brush: bash"&gt;java -Xmx928m BigApp&lt;/pre&gt;&lt;br&gt;&lt;b&gt;PS:&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Как установить размер кучи(heap) в Tomcat?&lt;/b&gt;&lt;br&gt;&lt;br&gt;Остановите сервер Tomcat, установите переменную окружения CATALINA_OPTS, затем запустите Tomcat снова. Смотрите файлы tomcat-install/bin/catalina.sh или catalina.bat чтобы узнать как используется эта переменная окружения.&lt;br&gt;&lt;br&gt;Примеры:&lt;br&gt;&lt;pre class="brush: bash"&gt;set CATALINA_OPTS=-Xms512m -Xmx512m&lt;/pre&gt;(Windows, значение не в кавычках)&lt;br&gt;&lt;pre class="brush: bash"&gt;export CATALINA_OPTS="-Xms512m -Xmx512m"&lt;/pre&gt;(ksh/bash, значение в кавычках)&lt;br&gt;&lt;pre class="brush: bash"&gt;setenv CATALINA_OPTS "-Xms512m -Xmx512m"&lt;/pre&gt;(tcsh/csh, значение в кавычках)&lt;br&gt;&lt;br&gt;Просмотрев catalina.bat или catallina.sh, вы можете заметить что для установки JVM опций использутся CATALINA_OPTS, JAVA_OPTS или и то и другое. В чем же различие между CATALINA_OPTS и JAVA_OPTS? Имя CATALINA_OPTS специфично именно для Tomcat, а JAVA_OPTS может использоваться и в других java приложениях (например Jboss). Так как переменные окружения как правило устанавливаются глобально, Вы можете использовать это CATALINA_OPTS задания опций для Tomcat, и JAVA_OPTS - для опций других приложений.&lt;br&gt;Я предпочитаю использовать CATALINA_OPTS.&lt;br&gt;&lt;br&gt;&lt;b&gt;Как установить размер кучи в JBoss?&lt;/b&gt;&lt;br&gt;&lt;br&gt;Остановите Jboss, отредактируйте значения в файле $JBOSS_HOME/bin/run.conf, запустите сервер. Вы можете изменить (или добавить если ее там нет) значение переменной JAVA_OPTS например на такое: &lt;code lang="bash"&gt;JAVA_OPTS="-server -Xms128m -Xmx128m"&lt;/code&gt;&lt;br&gt;&lt;br&gt;&lt;b&gt;Как установить размер кучи в Eclipse?&lt;/b&gt;&lt;br&gt;&lt;br&gt;Запускайте Eclispe с ключем "-vmargs &amp;lt;ваши опции&amp;gt;". Все опции после -vmargs будут интерпретированы как опции JVM.&lt;br&gt;Пример:&lt;br&gt;&lt;pre class="brush: bash"&gt;eclipse -vmargs -Xms64m -Xmx256m&lt;/pre&gt;&lt;br&gt;Это установит опции для Eclipse, но не для приложения которое Вы разрабатываете в eclipse. Для того чтобы поменять опции приложения, используйте Run As -&amp;gt; Open Run Dialog -&amp;gt; (x)=Arguments -&amp;gt; VM Arguments&lt;br&gt;&lt;br&gt;&lt;b&gt;Как установить размер кучи в NetBeans?&lt;/b&gt;&lt;br&gt;&lt;br&gt;Закройте NetBeans, отредактируйте файл netbeans-install/etc/netbeans.conf. Пример:&lt;br&gt;&lt;pre class="brush: bash"&gt;netbeans_default_options="-J-Xms512m -J-Xmx512m -J-XX:PermSize=32m -J-XX:MaxPermSize=128m -J-Xverify:none&lt;/pre&gt;&lt;br&gt;&lt;b&gt;Как установить размер кучи в Apache Ant?&lt;/b&gt;&lt;br&gt;&lt;br&gt;Установите переменную окружения ANT_OPTS. Примеры:&lt;br&gt;&lt;pre class="brush: bash"&gt;set ANT_OPTS=-Xms512m -Xmx512m&lt;/pre&gt;(Windows)&lt;br&gt;&lt;pre class="brush: bash"&gt;export ANT_OPTS="-Xms512m -Xmx512m"&lt;/pre&gt;(ksh/bash)&lt;br&gt;&lt;pre class="brush: bash"&gt;setenv ANT_OPTS "-Xms512m -Xmx512m"&lt;/pre&gt;(tcsh/csh)&lt;br&gt;&lt;br&gt;&lt;b&gt;Как установить размер кучи в JavaEE SDK/J2EE SDK/Glassfish/Sun Java System Application Server?&lt;/b&gt;&lt;br&gt;&lt;br&gt;Остановите сервер приложений, откройте $GLASSFISH_HOME/domains/domain1/config/domain.xml, найдите там XML элемент с именем java-config -&amp;gt; jvm-options. Пример:&lt;br&gt;&lt;pre class="brush: xml"&gt;&lt;br&gt;  -Xmx512m&lt;br&gt;  -XX:NewRatio=2&lt;br&gt;  -XX:MaxPermSize=128m&lt;br&gt;  ...&lt;br&gt;&lt;br&gt;&lt;/pre&gt;&lt;br&gt;Также вы можете изменять опции через веб-интерфейс администратора, обычно http://localhost:4848/, или https://localhost:4848/. Откройте Application Server в верхней части левой панели, затем на правой панели откройте JVM Settings -&amp;gt; JVM Options, и Вы увидите список текущих опций. Вы можете добавить новые или изменить существующие.&lt;br&gt;&lt;br&gt;Еще один способ - использование cli комманды. Смотрите справку:&lt;br&gt;&lt;pre class="brush: bash"&gt;./asadmin help create-jvm-options&lt;br&gt;./asadmin help delete-jvm-options&lt;br&gt;&lt;/pre&gt;&lt;/div&gt;</description><category>ant</category><category>eclipse</category><category>java</category><category>systems_engineering</category><category>translation</category><guid>/ru/posts/2010/7-java-heap/</guid><pubDate>Sat, 06 Feb 2010 20:59:00 GMT</pubDate></item></channel></rss>