Ограничение использования памяти и процессора java-приложения

скажите: "запустите myApp.jar с cpu=800 и памятью=1024"

Я занимаюсь java-программированием в течение многих лет, и это смущение, чтобы задать этот вопрос. Я даже не знаю, возможно это или нет. И если да, то как?

Я просто хочу знать, можно ли установить максимальную память программы java и использование процессора. Я вдруг подумал об этом, потому что недавно начал разрабатывать мобильные приложения. Я хочу знать, как приложение будет вести себя на устройстве, которое имеет очень ограниченная память и процессор.

Я видел физические движки с демонстрационными приложениями, которые работают в браузере, или я могу выполнить на своем ПК. Что если я запущу их на мобильном устройстве? Будет ли спектакль таким же? Вместо того чтобы разрабатывать пример мобильного приложения для тестирования производительности библиотеки, я бы предпочел сначала запустить его с определенным процессором и памятью, используя мой компьютер.

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

5 ответов


вы можете ограничить использование памяти опцией-Xmx, и вы можете ограничить использование ЦП, установив приоритет процесса и / или сходство ЦП.


JVM не имеет контроля над использованием ЦП и приоритетом.

JVM контролирует использование памяти max/min.

существует обходной путь. Можно запустить каждую JVM в отдельном контейнер Docker. И контролировать распределение ресурсов (память, процессор, сеть, IO) для каждого контейнера. Это именно добавленная стоимость контейнеров Docker.


в этом случае это может помочь запустить приложение на мобильном эмуляторе (например. Android).

с помощью этого вы можете эмулировать мобильное устройство с определенным процессором / памятью. Таким образом, вы должны получить производительность, сравнимую с устройством, которое имеет более медленный процессор и меньшую ОЗУ.

эмулятор Android / Nokia бесплатны и доступны для загрузки из разделов разработчиков сайтов Nokia/Google.


https://github.com/haosdent/jcgroup jcgroup - ваш лучший выбор. Вы можете использовать эту библиотеку для ограничения общих ресурсов процессора, скорости ввода-вывода диска, пропускной способности сети и т. д.


для CPU вы можете попробовать мой новый lib :).

https://github.com/dyorgio/cpu-watcher

пример использования:

// Limit process by PID to 25% of host cpu usage
CpuWatcher cpuWatcher = new CpuWatcher(pid, 25f);
cpuWatcher.start();