2016-03-01 74 views
2

我有一个调用外部二进制文件的java应用程序。这个二进制文件并不十分考虑它所消耗的资源,有时可能会让我的Java应用程序变慢。在Java的“sandbox”中运行可执行文件

有没有一种方法可以预先定义资源沙箱,我可以限制这个二进制文件?对于如何防止这个二进制文件干扰我的应用程序,您有任何其他建议吗?

+0

在单独的线程中调用外部库?没有太多关于你想要做什么的更多信息,这是我能给出的最佳答案。 –

+0

它目前正从一个单独的线程中调用。问题在于它是一个庞大的CPU,并且会显着降低计算机的速度。基本上,我想为它预先分配一个它可以使用的CPU周期份额,给它自己的内存份额。 –

+0

这似乎不是Java问题。至少在Unix/Linux中,你不能在ulimit后面启动外部程序吗?我不确定Windows使用什么;我猜这是“开始/低”或某些PowerShell调用。 – VGR

回答

2

AFAIK,没有没有办法做到这一点。当然,不是纯粹的/便携式的Java。 (Java沙盒是关于管理不可信代码可以做什么的,而不是它可以使用多少资源)。

事实上,我认为还没有一种可靠的方法来限制外部进程使用的CPU资源。

我能想到的最接近的就是试图控制线程(或进程)的优先级;请参阅Thread.setPriority(...)方法。