Таким образом, я просто установил свою новую Ubuntu 16.04 со всем необходимым материалом, чтобы начать программировать. Но теперь у меня есть большая проблема с поршнем. Я не могу открыть больше приложения, которое я имею на своем предыдущем ноутбуке с linux 12.04, который имеет половину моей текущей памяти. Моей 1 проблемой является с процессом XORG:
1040 root 20 0 2403428 1,091g 1,014g S 21,9 7,1 247:35.70 Xorg
требуется так много поршня после одного дня использования моего ноутбука. Вторая проблема с любителем/кэшем, которые всегда принимают 2 ГБ. Я считал это, и они объявляют, что это должно разделить на блоки, когда моей системе нужен он. Таким образом, мое текущее состояние:
KiB Mem : 16063252 total, 2044612 free, 11033624 used, 2985016 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 2778236 avail Mem
Таким образом, я имею все еще как свободные 2 ГБ.
теперь я запускаю компиляцию один из моего большего проекта. Когда свободный близко к 0 затем катастрофическим отказам процесса компиляции, потому что они не имеют никакого свободного поршня:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.16:test (surefire-itest) on project my-project: Execution surefire-itest of goal org.apache.maven.plugins:maven-surefire-plugin:2.16:test failed: The forked VM terminated without saying properly goodbye. VM crash or System.exit called ?
[ERROR] Command was/bin/sh -c cd /my-project && /usr/lib/jvm/java-8-oracle/jre/bin/java -Dfile.encoding=UTF-8 -jar my-project/target/surefire/surefirebooter8879869524337464183.jar my-project/target/surefire/surefire5896025025928619492tmp my-project/target/surefire/surefire_21839336642879397359tmp
это - состояние за несколько секунд до катастрофического отказа:
KiB Mem : 16063252 total, 178808 free, 13693208 used, 2191236 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 191788 avail Mem
да свободный и память пользы близко к 0, но там все еще похож на 2 ГБ в любителе/кэше. Почему linux/java не использует эту память? Есть ли некоторый путь, как я могу, оптимизировал мое текущее использование памяти?
Ваш компилятор выполняет в Java VM, который по умолчанию ограничен 1 ГБ, неважно, сколько свободной памяти Вы имеете. Попытайтесь предоставить java
команда -Xmx2G
, чтобы удостовериться, что она может исправить вдвое больше и не стесняться увеличивать то число далее, если это недостаточно. Обратите внимание, что осмотр через 2 ГБ не поможет, если Вы, окажется, будете использовать 32-разрядную версию Java (который маловероятен, рассматривая систему, которую Вы имеете).
Память, используемая кэшем/буферами, не является Вашей проблемой, поскольку это выпущено, по мере необходимости См. это.
Одна возможность:
Как Dmitry указывает, что Это вероятно Ваш VM Java, который это разрушает на Вас. Для расширения немного на его ответе существует пара переключателей, включенных, которые указывают, что начальный и максимальный размер выделения памяти объединяет доступный Java VM. Ниже выборка от страница
-Xmsn Specifies the initial size of the memory allocation
pool. This value must be a multiple of 1024
greater than 1 MB. Append the letter k or K to
indicate kilobytes, the letter m or M to indicate
megabytes, the letter g or G to indicate gigabytes,
or the letter t or T to indicate terabytes. The
default value is 2MB. Examples:
-Xms6291456
-Xms6144k
-Xms6m
-Xmxn Specifies the maximum size, in bytes, of the memory
allocation pool. This value must be a multiple of
1024 greater than 2 MB. Append the letter k or K
to indicate kilobytes, the letter m or M to indi-
cate megabytes, the letter g or G to indicate giga-
bytes, or the letter t or T to indicate terabytes.
The default value is 64MB. Examples:
-Xmx83886080
-Xmx81920k
-Xmx80m
питекантропа, Там некоторые различия в зависимости от платформы, на которой Вы работаете также.
On Mac OS X platforms, the upper limit for this
value when running in 32-bit mode (-d32) is approx-
imately 2100m minus overhead amounts, and approxi-
mately 127t minus overhead amounts when running in
64-bit mode (-d64). On Solaris 7 and Solaris 8
SPARC platforms, the upper limit for this value is
approximately 4000m minus overhead amounts. On
Solaris 2.6 and x86 platforms, the upper limit is
approximately 2000m minus overhead amounts. On
Linux platforms, the upper limit is approximately
2000m minus overhead amounts.
Другая возможность:
я также отмечаю, что у Вас нет включенной подкачки. Таким образом, если это не VM, Вы могли бы хотеть смотреть на это для метода определения, если необходимо включить подкачку. Я думаю, что Вы должны.
, Если Вы работаете 14.04 а не 16.04 , как это говорит в Вашем сообщении, Вы можете быть затронуты эта ошибка или возможно этот
, Если Вы работаете 16.04, и Xorg пропускает память, вызывающую Вашу проблему, возможно , эта ошибка вновь появилась из-за регрессии, в этом случае, необходимо сообщить об этом относительно панель запуска
Источник: http://www.manpagez.com/man/1/java/