我尝试编写带有内存泄漏的javascript代码,以便与Chrome中的探查器一起使用.然而,似乎剖析器没有显示它应该是什么.
这是我的代码:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="start_button">Start</button>
<button id="destroy_button">Destroy</button>
<script type="text/javascript" charset="utf-8">
var Leaker = function(){};
Leaker.prototype = {
init:function(){
this._interval = null;
this.start();
},
start: function(){
var self = this;
this._interval = setInterval(function(){ self.onInterval(); }, 100);
},
onInterval: function(){ console.log("Interval"); }
};
$("#start_button").click(function(){
if(leak !== null && leak !== undefined){
return;
}
leak = new Leaker();
leak.init();
});
$("#destroy_button").click(function(){
leak = null;
});
var leak;
</script>
Run Code Online (Sandbox Code Playgroud)
你可以看到我点击开始按钮时创建了一个新的对象Leaker.当我点击destroy时,该对象被设置为null(注意:但它不会被垃圾收集,因为setInterval仍然可以工作).
问题:然而,当我使用Google Chrome Profiler时,我点击destroy后没有向我显示对Leaker实例的任何引用(但它应该向我显示这样的引用,因为如上所述,setInterval的闭包仍然是抓住它).
点击破坏按钮后的Profiler(你可以看到我再也找不到leaker实例,而它应该在那里).
在这里控制台,setInterval仍然在运行,尽管探查器告诉我们没有更多的Leaker实例.
我是否在垃圾收集工作方式或Chrome分析器上遗漏了什么?
我正在从事 AI 项目,但我在 Python 方面仍然不是很有经验。
我正在尝试构建和测试这个项目。
我遵循了所有说明,但是当我尝试启动 python 脚本时仍然出现此错误:
类型错误:无法将 proto 文件构建到描述符池中!文件“tensorflow_serving/apis/classification.proto”的原型描述符无效:tensorflow_serving/apis/classification.proto:未加载导入“tensorflow_serving/apis/model.proto”。tensorflow.serving.ClassificationRequest.model_spec:“tensorflow.serving.ModelSpec”似乎是在“model.proto”中定义的,它不是由“tensorflow_serving/apis/classification.proto”导入的。要在此处使用它,请添加必要的导入。
有没有人知道我错过了什么?
我正在尝试将一些 Python 代码重写为 Javascript。
我不知道如何重写这部分:
zone_indices = [[idx for idx, val in enumerate(classified) if zone + 1 == val] for zone in range(maxz)]
Run Code Online (Sandbox Code Playgroud)
idx for idx, val:将idx放在开头是什么意思?