Я пишу приложение, в котором будут запущены несколько потоков, и хочу ограничить использование ЦП / памяти этими потоками.
Существует аналогичный вопрос для C ++ , но я хочу попытаться по возможности избегать использования C ++ и JNI. Я понимаю, что это может быть невозможно при использовании языка более высокого уровня, но мне любопытно посмотреть, есть ли у кого-нибудь какие-либо идеи.
РЕДАКТИРОВАТЬ: Добавлена награда; Я хотел бы получить действительно хорошие, хорошо продуманные идеи на этот счет.
РЕДАКТИРОВАТЬ 2: Ситуация, в которой я нуждаюсь, это выполнение кода других людей на моем сервере. По сути, это совершенно произвольный код, с единственной гарантией, что в файле класса будет основной метод. В настоящее время несколько совершенно разных классов, которые загружаются во время выполнения, одновременно выполняются как отдельные потоки.
Как написано, рефакторинг было бы затруднительно создавать отдельные процессы для каждого исполняемого класса. Если это единственный хороший способ ограничить использование памяти с помощью аргументов виртуальной машины, пусть будет так. Но я хотел бы знать, есть ли способ сделать это с потоками. Даже в качестве отдельного процесса я хотел бы иметь возможность каким-то образом ограничить использование его ЦП, поскольку, как я упоминал ранее, некоторые из них будут выполняться одновременно. Я не хочу, чтобы бесконечный цикл занимал все ресурсы.
РЕДАКТИРОВАТЬ 3: Простой способ приблизить размер объекта с помощью Инструментов классов Java; в частности, метод getObjectSize. Обратите внимание, что для использования этого инструмента необходимы специальные настройки.