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