Я новичок в этой теме, так что извиняюсь, если мой вопрос очевиден, но вот он -
Всякий раз, когда мы запускаем Java-приложение, создается новый экземпляр JVM. Сам JVM - это процесс, который работает на ОС и, как и любой другой процесс, имеет собственные требования к памяти.
Я знаю структуру памяти кучи и не кучи, а также их настройку и управление. То, что я ищу, это детали памяти самого процесса jvm, Как разделяется общая память i.e собственные требования к памяти jvm + куча + не-куча + собственный стек
Сколько сегментов есть?
Сколько памяти OS выделяет JVM и как jvm использует ее дальше?
Есть ли какая-либо команда или утилита для проверки этих сведений во время запуска приложения?
Я много искал в googled, но не нашел ничего конкретного в этом направлении, почти везде статьи объясняют структуру памяти кучи и не кучи (eden/old/meta и т. Д.). Я также посетил ниже Ссылки-
JVM Memory Types
How is the java memory pool divided?
JVM Memory segments allocation
https://blog.codecentric.de/en/2010/01/the-java-memory-architecture-1-act/
JVM memory mapping over a Linux Process
Understanding JVM Memory Allocation and Java Out of Memory: Heap Space
Кажется, я застрял здесь, любой указатель на эту тему было бы здорово, так что я могу начать поиск в этом направлении.Сведения о памяти JVM как процесса
ответ
Функция отслеживания основной памяти (NMT) Java 8 помогает ответить на ваши вопросы.
Run Java с опцией -XX:NativeMemoryTracking=summary
Затем во время выполнения выполнить следующую команду для печати статистики памяти виртуальной машины Java:
jcmd <pid> VM.native_memory summary
Результат будет выглядеть так:
Total: reserved=664192KB, committed=253120KB
- Java Heap (reserved=516096KB, committed=204800KB)
(mmap: reserved=516096KB, committed=204800KB)
- Class (reserved=6568KB, committed=4140KB)
(classes #665)
(malloc=424KB, #1000)
(mmap: reserved=6144KB, committed=3716KB)
- Thread (reserved=6868KB, committed=6868KB)
(thread #15)
(stack: reserved=6780KB, committed=6780KB)
(malloc=27KB, #66)
(arena=61KB, #30)
- Code (reserved=102414KB, committed=6314KB)
(malloc=2574KB, #74316)
(mmap: reserved=99840KB, committed=3740KB)
- GC (reserved=26154KB, committed=24938KB)
(malloc=486KB, #110)
(mmap: reserved=25668KB, committed=24452KB)
- Compiler (reserved=106KB, committed=106KB)
(malloc=7KB, #90)
(arena=99KB, #3)
- Internal (reserved=586KB, committed=554KB)
(malloc=554KB, #1677)
(mmap: reserved=32KB, committed=0KB)
- Symbol (reserved=906KB, committed=906KB)
(malloc=514KB, #2736)
(arena=392KB, #1)
- Memory Tracking (reserved=3184KB, committed=3184KB)
(malloc=3184KB, #300)
- Pooled Free Chunks (reserved=1276KB, committed=1276KB)
(malloc=1276KB)
- Unknown (reserved=33KB, committed=33KB)
(arena=33KB, #1)
Если вы ищете утилиты командной строки, начинайте с jps
, который просто печатает PID всех запущенных java-процессов. Затем выберите тот, который вы хотите открыть, и используйте jmap
с его PID.
JDK приходит с визуальными инструментами также. Старый JConsoke
и новый и лучший VisualVM
.
Я использовал Jconsole и Visual VM. Только что нашел эту статью, я смотрю что-то вроде этого, http://blogs.vmware.com/apps/2011/06/taking-a-closer-look-at-sizing-the-java-process.html – meexplorer
Если OS выделяет X-память для JVM в качестве процесса, а затем из X, JVM выделяет память на кучу/perm на основе -Xms/-Xmx/-XX: PermSize, MaxPermSize, скажем, в оставшейся памяти (X1 = X-heap- завивка). Теперь, что происходит с X1, сколько памяти требуется JVM для себя из X1, сколько идет в другие сегменты? как объясняет статья, есть и другие сегменты. – meexplorer
- 1. Общие сведения о памяти
- 2. Сведения о переполнении памяти Linux
- 3. Общие сведения о моделях памяти
- 4. Сведения о потреблении памяти приложения .NET
- 5. Общие сведения о распределении памяти массива символов
- 6. Общие сведения о модели памяти CLR 2.0
- 7. Как получить информацию о памяти кластера jvm
- 8. сколько памяти выделено для процесса jvm
- 9. SQL Server Процедура Сведения о памяти кэша
- 10. Общие сведения о адресах памяти в C++
- 11. Получить информацию о памяти процесса
- 12. Общие сведения о виртуальных машинах
- 13. как jvm хранит объекты внутри памяти jvm
- 14. Основные сведения о CoreData
- 15. Общие сведения о MVVM
- 16. Сведения о автобусной остановке
- 17. Сведения о сортировке Radix
- 18. Сведения о сети Chromecast
- 19. Основные сведения о MCU
- 20. Уточняйте сведения о серийности
- 21. Общие сведения о соединении()
- 22. Краткие сведения о ПЛК
- 23. Посмотреть сведения о ViewModel
- 24. Сведения о сохраненных процедурах
- 25. Конфликтующие сведения о Kinect
- 26. Низкоуровневые сведения о выполнении performSelectorOnMainThread:
- 27. О том, как вычислить сбор памяти JVM (youngGc + fullGc)?
- 28. Большая разница между размером процесса JVM и размером кучи памяти
- 29. Нарушение использования собственной памяти в рамках процесса JVM на SLES
- 30. JVM: Когда JVM нужно скопировать содержимое памяти
Именно то, что я искал. – meexplorer