Ответ 1
Сначала вычислите память, используемую до выполнения вашего кода, т.е. первую строку вашего кода.
long beforeUsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();
Вычислить память, используемую после выполнения кода: -
long afterUsedMem=Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory();
Затем вы можете сделать:
long actualMemUsed=afterUsedMem-beforeUsedMem;
Это даст вам реальную память, используемую вашей программой.
Для дальнейшего анализа памяти лучше всего использовать любой инструмент профилирования, например jvisualvm.
- Помните, что Runtime.getRuntime(). totalMemory(), эта память полная память, доступная вашей JVM.
- java -Xms512m -Xmx1024m, это означает, что общая память вашей программы начнется с 512 МБ, который может лениво загружаться до максимальной 1024 МБ.
- Итак, если вы используете ту же программу, на разных JVM, Runtime.getRuntime(). TotalMemory() может дать вам разные результаты.