Какой флаг мне нужно передать Java, чтобы ограничить время работы и использование памяти.class-файлом?

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

Мотивация: допустим, я автоматически загружаю чужой код и запускаю его автоматически, но я не знаю, если код (непреднамеренно) глючит и не сломает ли моя автоматическая система, если он попадет в бесконечный цикл или все больше использует память до предела системы.

Я прочитал здесь, что с помощью флага -Xmx Вы можете ограничить использование памяти, но я не могу найти способ ограничить время работы. Читая документацию, кажется, что есть способ ограничить использование процессора во время выполнения, но это не то, чего я хочу, я хочу, чтобы программа была завершена (убита при необходимости), если она работала более, скажем, 5 минут.

Пример того, что я хочу:

java -Xmx1m -time5m a_java_program

для ограничения использования памяти до 1 МБ и времени до 5 минут.

Есть ли что-то подобное для Java?

1 ответ

Обратите внимание, что опция Xmx ограничит память всей виртуальной машиной, а не одним классом. Во время выполнения, если у вас нет полного исходного кода и вы не можете запустить профилировщик, вы находитесь в той же ситуации. Совсем другое дело, если бы вы смогли получить исходный код. Затем у вас есть несколько опций для профилирования для времени выполнения и использования памяти (имейте в виду, что профилировщик будет иметь некоторые накладные расходы). Например, Eclipse: http://www.eclipse.org/tptp/home/documents/tutorials/profilingtool/profilingexample_32.html

Другие вопросы по тегам