我的java应用程序需要运行用户的javascript代码。我需要保护应用程序免受脚本错误行为(可能是无意的)。我实现了API调用限制并为可能的无限循环增加了时间限制。但是我没有找到针对OutOfMemory错误的保护,这可能是由于在脚本中分配了太多的对象,数组元素等引起的。
目前我只有两个想法:
在shell脚本中调用应用程序并在OOM失败时以某种方式恢复其状态;
拦截Context#observeInstructionCount并经常检查分配的内存量是否过于危险。
这两种变体都非常模糊和愚蠢,所以我想要更聪明的东西。
答案 0 :(得分:1)
唯一可行的方法是在单独的进程中运行javascript代码并为该JVM设置-Xmx
参数。