Объем памяти для Java-приложения - PullRequest
7 голосов
/ 07 июня 2011

В нашем приложении мы позволяем пользователям загружать / скачивать данные через лист Excel, и мы используем Apache POI для чтения и записи этих листов Excel.
Мы планировали перенести все наши листы xls в xlsx, но пришли кво время процесса узнайте, что объем памяти, занимаемой XSSF (для xlsx) через Apache POI, значительно высок.

В результате мы хотели провести стресс-тестирование и убедиться, что переход на xlsx не даст нам частыхИсключения OutOfMemory.Любые указатели на то, как мы можем эффективно записывать следы памяти, в то время как мы проводим стресс-тестирование этой функциональности с большими файлами Excel (xlsx).

Спасибо!

Ответы [ 2 ]

5 голосов
/ 07 июня 2011

Простой подход состоит в том, чтобы использовать инструмент, такой как jconsole или jvisualvm (который поставляется с JVM), для ручного мониторинга потребления памяти.

Вы также можете периодически использовать API runtime для измерения потребления памяти.

4 голосов
/ 07 июня 2011

Как упомянул @Johan, вы можете использовать профилировщик или использовать некоторую комбинацию методов maxMemory, totalMemory, и freeMemory из Runtime. Если эти результаты указывают на то, что объем памяти действительно является проблемой, Apache POI предлагает другой вариант с меньшим объемом для XSSF. Его сложнее использовать, поэтому я бы не рекомендовал его использовать, если только результаты вашего профилирования не указывают на это, но это может помочь.

...