通过Rhino javascript限制内存分配

时间:2012-10-13 05:43:54

标签: java memory rhino

我的java应用程序需要运行用户的javascript代码。我需要保护应用程序免受脚本错误行为(可能是无意的)。我实现了API调用限制并为可能的无限循环增加了时间限制。但是我没有找到针对OutOfMemory错误的保护,这可能是由于在脚本中分配了太多的对象,数组元素等引起的。

目前我只有两个想法:

  • 在shell脚本中调用应用程序并在OOM失败时以某种方式恢复其状态;

  • 拦截Context#observeInstructionCount并经常检查分配的内存量是否过于危险。

这两种变体都非常模糊和愚蠢,所以我想要更聪明的东西。

1 个答案:

答案 0 :(得分:1)

唯一可行的方法是在单独的进程中运行javascript代码并为该JVM设置-Xmx参数。