Как очистить кеш?

Я использую live CD дистрибутив Linux и я ' м вылезаю из памяти исключения.

>java -version
#Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000646e00000, 264241152, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 264241152 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /tmp/hs_err_pid50274.log

Я выполнил команду free -m , и она показывает ~ 250 МБ свободной оперативной памяти и 19 ГБ для кеш-памяти.

>free -m
            total       used       free     shared    buffers     cached
Mem:        24128      23827        301          0         15      18929
-/+ buffers/cache:      4881      19247
Swap:            0          0          0

Вот дамп памяти:

---------------  S Y S T E M  ---------------

OS:RapidLinux 20151103

uname:Linux 3.18.22 #1 SMP Fri Oct 9 19:28:11 UTC 2015 x86_64
libc:glibc 2.21 NPTL 2.21 
rlimit: STACK 8192k, CORE infinity, NPROC 96487, NOFILE 4096, AS infinity
load average:2.08 1.73 1.30

/proc/meminfo:
MemTotal:       24708040 kB
MemFree:          307572 kB
MemAvailable:     173696 kB
Buffers:           15612 kB
Cached:         19383916 kB
SwapCached:            0 kB
Active:          3784768 kB
Inactive:       19327244 kB
Active(anon):    3742084 kB
Inactive(anon): 19303520 kB
Active(file):      42684 kB
Inactive(file):    23724 kB
Unevictable:       15016 kB
Mlocked:           15016 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                96 kB
Writeback:             0 kB
AnonPages:       3727472 kB
Mapped:            55972 kB
Shmem:          19327344 kB
Slab:             671580 kB
SReclaimable:     116376 kB
SUnreclaim:       555204 kB
KernelStack:       23664 kB
PageTables:        24588 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    12354020 kB
Committed_AS:   28666748 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      738156 kB
VmallocChunk:   34346400260 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
DirectMap4k:       11748 kB
DirectMap2M:     2072576 kB
DirectMap1G:    23068672 kB

Memory: 4k page, physical 24708040k(307572k free), swap 0k(0k free)

Я попытался очистить кеш, запустив sync; эхо 3 | sudo tee / proc / sys / vm / drop_caches в качестве проверки работоспособности и неожиданного сюрприза, кеш вообще не отключился, но команда завершилась успешно.

Я удалил тонну старых журналов (из aufs /, который должен быть в ОЗУ), выполнил команду для очистки кеша - по-прежнему ничего.

Остальная файловая система занимает всего ~ 9 ГБ. Как принудительно очистить кеш?

0
14.03.2016, 20:42
2 ответа

У вас есть 19 ГБ ОЗУ, свободной для программ.Нет необходимости очищать дисковый кеш: система освободит его, если память понадобится для других целей, например для запуска программы. Единственное, что вы можете сделать, очистив дисковый кеш, - это замедлить работу вашего компьютера.

Место на диске не имеет значения. Удаление файлов вам не поможет.

У вас 19 ГБ ОЗУ, и программа утверждает, что не может выделить 26 МБ. Посчитайте: 26 МБ <19 ГБ. Это ошибка программы либо в том, как она выделяет память, либо в том, как она сообщает об ошибках. Проверьте /tmp/hs_err_pid50274.log , чтобы узнать, есть ли в нем дополнительные подсказки.

1
28.01.2020, 02:35

Shmem: 19327344 kB

У вас есть 19 ГБ в tmpfsили другом объекте общей памяти.

Часто tmpfs. Проверьте df -h -t tmpfs.

Общая память System V может быть показана как ipcs -m.

Некоторую, но не всю, другую общую память можно найти при сканировании /proc. В моем ответе есть небольшой скрипт на Python:Могу ли я увидеть объем памяти, выделенный в качестве буферов GEM?

РЕДАКТИРОВАТЬ :в вашем случае у вас может быть что-то, удерживающее удаленный файл открытым. Это означало бы, что использование пространства будет отображаться в df, но не в du. Можно сканировать /proc/на наличие удаленных файлов... У меня нет такого удобного скрипта для этого, но может быть можно сделать ls -lR /proc | less, и искать строку (deleted)с помощью команды /less. Возможно, вы увидите, что ваши удаленные файлы журналов все еще остаются открытыми в каком-то процессе.

1
28.01.2020, 02:35

Теги

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