Мой сценарий выполняет следующиеPerl скрипт странное поведение/регенерацией памяти
- читает огромный текстовый файл и создает хэш от него. (О 24million простой ключ-значения pairs.Takes около 5 минут и потребляет на 92% компьютерной памяти 4Gb)
- Запускает моделирование с использованием информации из хэша. (принимает около 30minutes)
- печатает результаты в конце моделирования (в файл и стандартный вывод)
Тогда ждет для Через 10 минут после последнего заявления печати и выхода. Ожидание в конце не происходит каждый раз. Во время ожидания команда top
показывает то же 92% использование памяти, но без использования процессора. Почему это происходит иногда после его завершения? Если я ударил CtrlC, он немедленно выходит без каких-либо изменений в результатах (результатах). Как я отлаживаю это или ожидаемое поведение, поскольку хеш огромен?
EDIT
Можно ли вернуть некоторую память на лету, удалив ненужные ключ - пары значений из хэша?
Значительная часть вашей проблемы может быть замедленной из-за замены. Время, затраченное на конец, может быть связано с разрушением вашей структуры данных. 'POSIX :: _ exit (0)' будет обходить очистку. – ikegami
Если я обойду очистку, ОС не восстановит память? Это хорошая практика? Если я запустил его в системе с большим объемом памяти, эта проблема исчезнет? – Jean
ОС вернет память. Это не хорошая практика, так как деструкторы не будут вызваны. Да, если это проблема обмена, как я предполагаю. – ikegami