用mozilla rhino编写Java脚本和内存管理问题
java scripting with mozilla rhino and memory management problem
我正在构建一个javascript api,它将使用mozilla rhino调用一些java对象。
一切都很好,但是我想避免无限循环,这可能会减慢我的java应用程序。
例如(在javascript中):
while(true) doSomething(); // doSomthing will call a method in java
在现代浏览器中,在一段时间后出现一个错误,告诉脚本使应用程序运行缓慢,如果我想继续和停止脚本。
如果可能的话,我想在我的java应用程序上实现这一点,但我不知道如何。我能想到的唯一解决方案是计算每秒被调用的方法的数量,如果这个数字太大,就停止脚本。你还有别的主意吗?
计算方法调用对不调用任何方法的代码不起作用,例如:
while (true) {
i++;
}
我认为你想要的是observveinstructioncount()。也可以看看这里的讨论-他们讨论的一些东西看起来有点不确定,但它可能会帮助你。
如果你可以使应用程序多线程,你可以生成一个新的线程来处理来自javascript的每个调用。在线程开始时,记录开始时间,并创建一些超时逻辑。
public void doJavaScript() {
final long start = System.currentTimeMillis();
final long timeout = 1000;
new Thread(){
@Override
public void run() {
while ((start + timeout) < System.currentTimeMillis()) {
... do work ...
}
}
}.start();
}
相关文章:
- 如何使用java脚本更改浏览器的内存管理以增加会话存储和本地存储的内存
- 主干网.js事件和内存管理
- JavaScript 中的内存管理
- 转换 Redis 密钥时的内存管理
- 在 javascript 函数和内存管理中声明变量
- jQuery:新的临时 DOM 元素的内存管理
- 主干 + 木偶 - 模型/集合的内存管理最佳实践
- 在 express/node.js API 中进行高效的服务器端 JavaScript 内存管理
- 电话间隙内存管理
- JavaScript 中的性能内存管理
- Javascript内存管理:删除和拼接
- Javascript内存管理(requestAnimationFrame回调)
- 使用THRE.JS对象的全局数组的Javascript内存管理
- 了解JavaScript中的内存管理,Mozilla
- 具有重复jQuery数据表AJAX调用的内存管理
- 内存管理在javascript jquery手机与phonegap
- 如何使用YUI进行适当的内存管理以避免泄漏
- Angularjs是如何用ngView处理内存管理的?
- NodeJS+Redis+WebSocket内存管理
- 加速器合金应用中的内存管理