Узнать сколько памяти для java linux

как узнать java heap memory size

Для вычисления необходимого размера кучи (heap) мы воспользуемся опцией -XX:+PrintFlagsFinal . В Java размер изначального (initial) и максимального (maximum) размера кучи (heap) выделяется по эргономическому алгоритму, дополнительно ссылки для java 7 и для java 8.

Если коротко то все это расчитывается по следующей формуле:

Изначальный размер кучи (initial heap size)

Соотношение 1 ⁄64 от количества физической памяти на 1GB

Максимальный разер кучи (maximum heap size)

Соотношение 1 ⁄4 от количества физической памяти на 1GB

К примеру рассмотрим вот такую машинку:

Для отображения необходимой информации необходимо выполнить следующую команду:

Вот такой результат мы должны увидеть на экране:

Итого по полученным данным:

Изначальный размер кучи (initial heap size)

InitialHeapSize = 97801152 байт (97,8 Мб)

Максимальный разер кучи (maximum heap size)

MaxHeapSize = 1566572544 байт (1,5 Гб)

Выделенный размер кучи (heap memory size) довольно близок к результатам эргономики:

Изначальный размер кучи (initial heap size)

6144 Мб / 64 = 96 Мб

Максимальный разер кучи (maximum heap size)

6144 Мб / 4 = 1536 Гб

Для установки изначального размера кучи (initial heap size) используют -Xms , а для максимального размера кучи (maximum heap size) используют -Xmx .

Итого получаем команду для запуска:

Как правило значения округляют в большую сторону, так что не бойтесь выделить немного больше и эксперементировать.

Источник

Информация об оперативной памяти в Linux. Свободная, занятая и тип памяти

В этой статье мы рассмотрим, как получить информацию об оперативной памяти (RAM) в Linux.

Мы воспользуемся утилитами командной строки доступными для большинства Linux дистрибутивов.

Свободная и занятая оперативная память

Для получения информации о количестве свободной и занятой оперативной памяти в Linux можно использовать различные утилиты и команды. Рассмотрим несколько распространенных способов.

Команда free

Команда free очень простая, она выводит информацию о общем количестве оперативной памяти, о количестве занятой и свободной памяти, а также об использовании файла подкачки.

По умолчанию объем памяти выводится в килобайтах. Используя опции, можно выводить объем памяти в других форматах. Некоторые опции:

  • -m — в мегабайтах
  • -g — в гигабайтах
  • -h — автоматически определить формат

Команда vmstat

Команда vmstat выводит различную статистику по использованию памяти. Используя ключ -s можно вывести подробную статистику в табличном виде.

Команда top

top — это утилита командной строки, которая используется для мониторинга процессов и используемых ресурсов компьютера.

Запуск утилиты top :

В заголовке выводится информация об использованной оперативной памяти.

Команда htop

Утилита htop, также как и top, используется для мониторинга ресурсов и процессов.

Для установки утилиты htop в Ubuntu Linux (Linux Mint и других Ubuntu/Debian-дистрибутивах) выполните команду:

Запуск утилиты htop :

Файл /proc/meminfo

Описанные выше команды, в качестве источника информации используют системные файлы из файлов, хранящихся в виртуальной файловой системе /proc . В файле /proc/meminfo содержится информация об использовании памяти. Выведем содержимое файла /proc/meminfo :

Тип памяти и частота

Рассмотрим, как получить информацию об установленных в компьютер модулях оперативной памяти. Воспользуемся командной dmidecode

Используем следующую команду:

В выводе команды будет информация о слотах оперативной памяти. Для каждого слота отображается установленный модуль оперативной памяти, его тип (поле Type ), размер (поле Size ), скорость/частота (поле Speed ) и другая информация.

Читайте также:  Системный блок windows 10 home

В зависимости от системы и оборудования не всегда удается получить все данные, поэтому некоторые поля могут быть пустыми или иметь надписи Not provided/Unknown.

Заключение

Мы рассмотрели различные способы для просмотра информации о доступной и занятой оперативной памяти, а также показали, как вывести информацию об установленных модулях оперативной памяти.

Для отслеживания использования ресурсов компьютера существует множество графических программ. Найти их можно в нашем каталоге программ для Linux в разделе Система/Мониторинг.

Источник

Инструмент командной строки, чтобы найти размер кучи Java и используемую память (Linux)?

Есть ли инструмент командной строки (Linux) для проверки размера кучи (и используемой памяти) приложения Java?

Я пробовал jmap. Но это дает информацию. о внутренних областях памяти, таких как Eden/PermGen и т.д., что мне не полезно.

Я ищу что-то вроде:
Макс. Память: 1 ГБ
Минимальная память: 256 МБ
Память кучи: 700 МБ
Используемая память: 460 МБ

Вот и все. Я знаю, что вижу это в JConsole и т.д., Но мне нужен инструмент командной строки (не могу включить JMX и т.д.)

Любой такой инструмент/команда?

ОТВЕТЫ

Ответ 1

Каждый процесс Java имеет pid , который вам нужно сначала найти с помощью команды jps .

Как только у вас есть pid, вы можете использовать jstat -gc [insert-pid-here] , чтобы найти статистику поведения собранной мусора.

jstat -gccapacity [insert-pid-here] будет представлена ​​информация о создании пула памяти и возможностях пространства.

jstat -gcutil [insert-pid-here] представит использование каждого поколения в процентах от его емкости. Полезно получить обзор с точки зрения использования.

Смотрите jstat docs на сайте Oracle.

Ответ 2

jvmtop — это инструмент командной строки, который обеспечивает просмотр в реальном времени с несколькими метками, включая кучу.

Пример вывода режима просмотра виртуальной машины:

Ответ 3

Эта команда показывает настроенные размеры кучи в байтах.

Он также работает над AMI Amazon на EC2.

Ответ 4

Попробуйте это, он работал в Ubuntu и RedHat:

Вывод всех этих команд напоминает результат ниже:

Чтобы найти размер в МБ, разделите значение на (1024 * 1024).

Ответ 5

Без использования JMX, который используется большинством инструментов, все, что вы можете сделать, это использовать

и сделайте вывод, что настройки будут из параметров командной строки.

Вы не можете получить динамическую информацию без JMX по умолчанию, но вы можете написать свой собственный сервис, чтобы сделать это.

Кстати: я предпочитаю использовать VisualVM, а не JConsole.

Ответ 6

Существует инструмент командной строки с визуальным аспектом — jvm-mon. Это инструмент мониторинга JVM для командной строки, который отключается:

  • использование кучи, размер и макс
  • процессы jvm
  • Использование процессора и GC
  • верхние темы

Показатели и диаграммы обновляются, пока инструмент открыт.

Ответ 7

Поздно вечером, но очень простое решение — использовать скрипт jpsstat.sh. Он обеспечивает простую текущую оперативную память, максимальную память и информацию об использовании процессора.

  • Перейдите кпроекту GitHub и загрузите файл jpsstat.sh
  • Щелкните правой кнопкой мыши на jpsstat.sh и перейдите на вкладку разрешений и сделайте ее исполняемой
  • Теперь запустите скрипт, используя следующую команду ./jpsstat.sh

Вот пример вывода скрипта —

Ответ 8

Любой подход должен дать вам примерно такое же число. Всегда полезно выделять кучу, используя -X..m -X..x для всех поколений. Затем вы можете гарантировать, а также сделать ps, чтобы увидеть, какие параметры были переданы и, следовательно, используются.

Для фактического использования памяти вы также можете приблизительно сравнить значения VIRT (выделенные и совместно используемые) и RES (фактически использованные) со значениями jstat:

Для Java 8, см. Jstat для этих значений на самом деле означает. Предполагая, что вы запускаете простой класс без mmap или обработки файлов.

Читайте также:  Openssl gost для windows

Макс:

(примерно близко и ниже к VIRT памяти)

Макс (Мин, Используется):

(примерно близко к памяти RES)

«Не цитируйте меня по этому поводу», но VIRT mem примерно равна или превышает максимальную выделенную память, но пока используемая память свободна/доступна в физической памяти, JVM не выдает исключение памяти. На самом деле, максимальная память даже не проверяется на предмет физической памяти при запуске JVM даже при выключенной операционной системе. Лучшее объяснение того, что Виртуальная память действительно использовала процесс Java, обсуждается здесь.

Ответ 9

Начиная с Java8 и выше, вы можете использовать следующую команду:

jcmd JAVA_PROCESS_ID GC.heap_info

Вы можете сослаться на сумму, общее и использованное количество памяти на выходе.

Ответ 10

Сначала получите идентификатор процесса, первый номер из перечисленного процесса, из одного из следующих: (или просто используйте ps aux | grep java , если вы предпочитаете это)

Затем используйте идентификатор процесса:

Ответ 11

Если вы используете jrockit, попробуйте инструмент командной строки jrcmd. Например:

Для получения дополнительных команд, таких как heap_diagnostics, используйте команду «jrcmd help», чтобы перечислить их.

Ответ 12

Использование команды top — это самый простой способ проверить использование памяти программой. Столбец RES показывает реальную физическую память, занятую процессом.

В моем случае у меня был файл 10g, читаемый в java, и каждый раз, когда я получал исключение outOfMemory. Это произошло, когда значение в столбце RES достигло значения, установленного в опции -Xmx . Затем, увеличив память с помощью опции -Xmx , все пошло нормально.

Ответ 13

Пример O/P указанной команды

Ответ 14

Что касается размера кучи Java, в Linux вы можете использовать

и найдите -Xms, -Xmx, чтобы узнать размер начальной и максимальной кучи.

Однако, если для интересующего вас процесса Java отсутствует -Xms или -Xmx, это означает, что ваш Java-процесс использует размеры кучи по умолчанию. Вы можете использовать следующую команду, чтобы узнать размеры по умолчанию.

или конкретный jvm, например,

и найдите InitialHeapSize и MaxHeapSize, который находится в байтах.

Ответ 15

проверить https://github.com/TeoGia/jotun Это простая программа, которая выводит использование кучи в формате json

Ответ 16

До сих пор не существует такого инструмента для печати памяти кучи в формате, который вы запрашивали . Единственный и единственный способ печати — это написать Java-программу с помощью Runtime Class,

Источник

linux-notes.org

Узнать размер Java Heap Memory Size

Есть проблема с Java Heap Memory Size, ее нужно нормально указать для того чтобы все нормально работало ( например, веб- сервер tomcat, liferay, OpenMRS и так далее) и в данной статье «Узнать размер Java Heap Memory Size» расскажу как можно найти оптимальное значение для java.

Сейчас я покажу вам, как использовать-XX:+PrintFlagsFinal чтобы узнать ваш размер кучи «heap size». В Java, по умолчанию и максимальный размер кучи распределяются на основании алгоритма — эргономики (ergonomics algorithm).

Как же рассчитывается Heap sizes?

Начальный размер кучи — это соотношение 1/64 физической памяти к 1 Гб. (Initial heap size of 1/64 of physical memory up to 1Gbyte)
Максимальный размер кучи — это соотношение 1/4 физической памяти до 1 Гб. (Maximum heap size of 1/4 of physical memory up to 1Gbyte)

Тем не менее, алгоритм что выше, как раз для справки, могут варьироваться в разных VM.

Обзор памяти Java

Краткий обзор структуры памяти Java:

1. Java Heap Size
Место для хранения объектов, созданных приложением Java, это где Garbage Collection берет память для приложений Java. Для «тяжелого процесса Java», недостаточный размер кучи вызовет популярную ошибку: java.lang.OutOfMemoryError: Java heap space.

-Xms — Установить начальный размер Java куча «Java heap size»
-Xmx — Установить максимальный размер Java куча «Java heap size»

Читайте также:  Windows 10 crashing fix

2. Размер Perm Gen (Perm Gen Size).
Место для хранения определение загруженного класса и метаданных. Если большой кодовый, базовый проект загружен, имеет недостаточный размер Perm Gen size то это вызовит ошибку: Java.Lang.OutOfMemoryError: PermGen.

-XX:PermSize — Установить начальный размер для параметра «PermGen Size».
-XX:MaxPermSize — Установить максимальный размер для параметра «PermGen Size».

3. Размер java стека «Java Stack Size»
Размер java нитей (Size of a Java thread). Если проект имеет много обработки нитей, попробуйте уменьшить этот размер стека, чтобы избежать нехватки памяти.

-Xss = Установить размер стека Java (java thread stack size).

ЗАМЕТКА
Значение по умолчанию для heap size, perm gen, или stack size отличаются от различных JVM. Лучшие практически всегда определить собственные значение для сервера.

ТЕСТЫ или ГОТОВЫЕ примеры

Приведу различные тесты на разных ОС.

Ubuntu

Среда тестирования имеет такие характеристики:

ОС : Ubuntu 13 (64 битная) (Под управлением VirtualBox)
RAM : 4Гб оперативной памяти
CPU : 1 x Процессор
JDK : 1.7

Выполним команду для отображения необходимой информации:

Для JVM выделено следующие значения по умолчанию:

Java heap size
InitialHeapSize = 64781184 байт (61.7 Мб) и MaxHeapSize = 1038090240 байт (990Мб).

PermGen Size
PermSize = 21757952 байт (20.75 Мб), MaxPermSize = 174063616 байт (166 Мб)

Thread Stack Size
ThreadStackSize = 1024 кб (1 Мб)

Выделенный размер кучи (heap memory size) довольно близок к результатам эргономики.

#ergonomics algorithm
Initial heap size = 4096M/64 = 64 Мб
Maximum heap size = 4096M/4 = 1024 Мб

Mac OS X

Среда тестирования имеет такие характеристики:

ОС : Mac OSX 10.9
RAM : 8 Гб оперативной памяти
CPU : 4 x Поцессор
JDK : 1.7

Запускаем команду чтобы проверить:

Узнать размер Java Heap Memory Size в macOS X

Для JVM выделено следующие значения по умолчанию:

Java heap size
InitialHeapSize = 20655360 байт (19.69M) и MaxHeapSize = 331350016 bytes (316 Мб).

PermGen Size
PermSize = 21757952 байт (20.75 Мб), MaxPermSize = 85983232 байт (82 Мб).

Java Stack Size
ThreadStackSize = 1024 Кб (1 Мб)

Выделенный размер кучи памяти (heap memory size) не имеют никакого значения, если сравнить со следующий результат по алгоритму эргономики.

#ergonomics algorithm
Initial heap size = 8192M/64 = 128 Мб
Maximum heap size = 8192M/4 = 2048 Мб

Windows
Grep нет в Windows, вместо этого, мы используем Findstr.

Среда тестирования имеет такие характеристики:

ОС : Windows 8
RAM : 16 Гб
CPU : 8 x процессор
JDK : 1.7

Узнать размер Java Heap Memory Size в windows

Для JVM в Windows ОС выделено следующие значения по умолчанию:

Java heap size
InitialHeapSize = 266634176 байт (256 Мб) и MaxHeapSize = 4266146816 байт (4068 Мб).

PermGen Size
PermSize = 21757952 байт (20.75 Мб), MaxPermSize = 85983232 bytes (823 Мб).

Java Stack Size
ThreadStackSize = 0 kilobytes. (weird…)

Выделенный размер кучи памяти почти такой же как и по алгоритму эргономика:

#ergonomics algorithm
Initial heap size = 16384/64 = 256 Мб
Maximum heap size = 16384/4 = 4096 Мб

Предлагаемые для Java Memory

Ниже, я привел мою рекомендацию (параметры) для малой и средней нагрузки приложений Java 🙂

Heap = -Xms512m -Xmx1024m
PermGen = -XX:PermSize=64m -XX:MaxPermSize=128m
Thread = -Xss512k

P.S: Для большинства проектов Java, 512k памяти для потока (thread) более чем достаточно.

оптимаьные значения для Java Heap Memory Size

Часто задаваемые вопросы.

какая -version?
Избегайте жалоб от компилятора Java, заменить «-version» с вашим именем приложения Java.

Что это -XX:+PrintCommandLineFlags?
Это -XX:+PrintCommandLineFlags используется для вывода значения,только для изменения VM (обозначается так: = символ).

Вывод

Наконец, значения по умолчанию для heap memory, perm gem и stack size отличается от JVM, не ожидайте что JVM будет использовать оптимальные значения для вашего приложения Java.

На этом, я завершаю «Узнать размер Java Heap Memory Size». Надеюсь, было познавательно.

Источник

Оцените статью