Я запускаю Cassandra (процесс Java) на моем сервере, который имеет ограниченную память.Я редактирую конфигурацию Cassandra (config/jvm.options
), чтобы передать эти аргументы виртуальной машине Java, чтобы ограничить размер кучи.
-Xms180M -Xmx180M
Я вижу их в выводе ps ax | grep java
, который показывает:
[...] /usr/lib/jvm/java-8-openjdk-amd64/bin/java [...]
-Xms180M -Xmx180M [...] org.apache.cassandra.service.CassandraDaemon
Но, похоже, он использует намного больше, чем 180 МБ, и другой серверный процесс продолжает исчезать.Я предполагаю, что ядро убивает другой процесс из-за ограниченной памяти.
Вот фрагмент экрана в top
:
KiB Mem : 1009128 total, 87072 free, 643488 used, 278568 buff/cach
KiB Swap: 0 total, 0 free, 0 used. 222228 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
20410 cassand+ 20 0 2048132 433828 8456 S 0.3 43.0 41:25.22 java
Не RES 433828
Имеется в виду, чем 433 МБ ОЗУ используется Кассандрой?Кажется ли это возможным после того, как якобы ограничил кучу Java до 180 МБ?Если размер кучи ограничен 180 МБ, то для чего нужны остальные 433-180 = 253 МБ?И можно ли это тоже ограничить?