Подзадача в собственном пространстве кучи - PullRequest
1 голос
/ 03 июля 2011

В Java, предположив, что вы хотите запустить задачу в своем собственном пространстве кучи (например, чтобы она могла аварийно завершить работу с ошибкой нехватки памяти, не затрагивая остальную часть вашей программы), вы можете использовать Runtime.exec для загрузки JVMи соответствующие файлы байт-кода из файловой системы и переделайте всю работу, которая должна быть сделана для запуска программы Java с нуля.

Это несколько высокие издержки, если задачи, которые вы хотите выполнить, довольномелкозернистый.Есть ли какой-нибудь более низкий способ сделать это?

1 Ответ

3 голосов
/ 03 июля 2011

Поскольку вы все равно будете заниматься межпроцессным взаимодействием, можете ли вы рассмотреть вариант RMI?С помощью демона RMI у вас могут быть объединенные процессы, в которые вы можете отправлять задания и получать результаты.Это также освобождает вас от ручного управления порождающей виртуальной машиной и т. Д.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...