通过Rhino javascript限制内存分配

通过Rhino javascript限制内存分配,java,memory,rhino,Java,Memory,Rhino,我的java应用程序需要运行用户的javascript代码。我需要保护应用程序免受脚本错误行为(可能是无意的)。我实现了API调用限制,并针对可能的无止境循环增加了时间限制。然而,我并没有发现防止OutOfMemory错误的保护措施,这可能是由于在脚本中分配了太多的对象、数组元素等而导致的 目前我只有两个想法: 在shell脚本中调用应用程序,并在OOM失败时以某种方式恢复其状态 截取上下文#observeInstructionCount并经常检查分配的内存量是否增长得太危险 这两种变体都非

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

目前我只有两个想法:

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

  • 截取上下文#observeInstructionCount并经常检查分配的内存量是否增长得太危险


这两种变体都非常模糊和愚蠢,因此我希望有更智能的版本。

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