Java-приложение не может контролировать объем памяти или (или ЦП), используемый его потоками,
независимо от того, выполняются ли потоки доверенного или ненадежного кода. Там нет API для выполнения
это в современных поколениях JVM. И конечно, нет никаких API для мониторинга использования памяти потоком. (Даже не ясно, что это значимое понятие ...)
Единственный способ гарантировать использование ресурсов недоверенного Java-кода - это запустить код в отдельной JVM и использовать элементы управления ресурсами уровня операционной системы (такие как ulimit, nice, sigstop и т. Д.) И "-Xmx "чтобы ограничить использование ресурсов этой JVM.
Некоторое время назад Sun выпустила JSR 121 для решения этой проблемы. Этот JSR позволил бы разделить приложение на части (называемые «изолятами»), которые обменивались данными с помощью передачи сообщений, и предоставлял возможность одному изолятору отслеживать и контролировать другое. К сожалению, API-интерфейсы Isolate еще не были реализованы в любой основной JVM.