2016-03-01 2 views
2

У меня есть приложение Java, которое вызывает внешний двоичный файл. Этот двоичный код не очень внимателен к ресурсам, которые он потребляет, и иногда может замедлить работу моего приложения Java до обхода.Запуск исполняемого файла внутри «песочницы» из Java

Есть ли способ, которым я могу предопределить изолированную среду ресурсов, с которой я могу ограничить этот двоичный файл? Есть ли у вас какие-либо другие предложения относительно того, как запретить этому двоичному файлу вмешиваться в мое приложение?

+0

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

+0

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

+0

Это не похоже на проблему с Java. Не можете ли вы запустить внешнюю программу после 'ulimit', по крайней мере, в Unix/Linux? Я не уверен, что использует Windows; Я предполагаю, что это либо «start/low», либо какой-то вызов PowerShell. – VGR

ответ

2

AFAIK, нет, нет способа сделать это. Конечно, не в чистой/переносной Java. (Java-песочница - это управление тем, что может сделать ненадежный код, а не сколько ресурсов он может использовать.)

Фактически, я не думаю, что существует даже надежный способ ограничить ресурсы ЦП, используемые внешним процессом.

Ближайший, о котором я могу думать, пытается контролировать приоритеты потоков (или процессов); см. метод Thread.setPriority(...).

Смежные вопросы