代码的jsfiddle如下:http://jsfiddle.net/4qhr2/
// scope everything to a function
function main() {
function MyWrapper() {
this.element = null;
}
MyWrapper.prototype.set = function(elem) {
this.element = elem;
}
MyWrapper.prototype.get = function() {
return this.element;
}
var MyView = Backbone.View.extend({
tagName : "div",
id : "view",
events : {
"click #button" : "onButton",
},
initialize : function(options) {
// done for demo purposes only, should be using templates
this.html_text = "<input type='text' id='textbox' /><button id='button'>Remove</button>";
this.listenTo(this,"all",function(){console.log("Event: "+arguments[0]);});
},
render : function() {
this.$el.html(this.html_text);
this.wrapper = new MyWrapper();
this.wrapper.set(this.$("#textbox"));
this.wrapper.get().val("placeholder");
return this;
},
onButton : function() {
// assume this gets .remove() called on subviews (if they existed)
this.trigger("cleanup");
this.remove();
}
});
var view = new MyView();
$("#content").append(view.render().el);
}
main();
然而,我不清楚如何使用谷歌Chrome的分析器来验证这是,事实上的情况。堆探查器快照中出现了无数的东西,我不知道如何解码什么是好的/坏的。到目前为止,我在它上面看到的教程要么告诉我“使用快照分析器”,要么给我一个关于整个分析器如何工作的非常详细的宣言。是否可以仅仅将探查器作为一个工具,或者我真的必须了解整个事情是如何设计的?
编辑:像这样的教程:
>
检查配置文件面板下半部分泄漏对象的保留路径
如果不能很容易地推断分配站点(即事件侦听器):
通过JS控制台检测保留对象的构造函数,以保存分配的堆栈跟踪
找到内存泄漏的一个好的工作流程是三快照技术,最早由Loreena Lee和Gmail团队使用,以解决他们的一些内存问题。这些步骤通常是:
对于您的示例,我修改了代码以显示这个过程(您可以在这里找到它),将骨干视图的创建延迟到Start按钮的click事件。现在:
然而,黄色节点确实有来自JavaScript的直接引用。在同一个分离的DOM树中寻找黄色节点,以定位JavaScript中的引用。应该有一个从DOM窗口到元素的属性链。
在您的特定中,您可以看到标记为红色的HTML Div元素。如果展开该元素,您将看到由“cache”函数引用的元素。
选择该行,并在控制台中键入$0,您将看到实际的函数和位置:
>$0
function cache( key, value ) {
// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
if ( keys.push( key += " " ) > Expr.cacheLength ) {
// Only keep the most recent entries
delete cache[ keys.shift() ];
}
return (cache[ key ] = value);
} jquery-2.0.2.js:1166
function cache( key, value ) {
return value;
}
我的应用程序需要大约10GB的RAM用于特定输入,而对于常规输入,大约1GB就足够了。通过对JProfiler进行更仔细的分析,可以发现(在GC之后)java的标准类使用了相当多的内存。util* :
问题内容: 我怀疑我们的ActiveMQ连接桥中存在严重的内存泄漏- 我们看到的是典型的内存泄漏模式(应用程序加载正常,如果长时间运行或在短时间内一次又一次地重新启动,则会降低速度) 。我查找了发现Java内存泄漏的现代最佳实践,许多开发人员似乎正在放弃传统工具(如jhat / jmap)来代替new(er)。 启动此工具(并花几个小时阅读其教程)后,我便能够为CPU和内存拍摄探查器快照。 在这一
我需要找到Flutter的内存泄漏。如何找到他们?以及如何为测试创建内存泄漏?
问题内容: 我想在我的Java应用程序中发现内存泄漏,但是我不知道如何使用Netbeans Profiler来做到这一点。 问题答案: 网络上有一些资源可以帮助您 http://www.javapassion.com/handsonlabs/nbprofilermemory/ http://www.netbeans.org/kb/articles/nb-profiler- uncoveringle
我们在堆大小为512M的IBM J9 VM上运行weblogic服务器。 今天,服务器因OutOfMemory错误而失败。 我使用Eclipse Memory Analyzer打开了堆转储文件xxx.phd(安装了IBM DTFJ pluign以支持。phd文件)。 垫子给我一份泄漏嫌疑人报告,像这样: 我如何找到创建这个大数组的类? 或者任何帮助我识别大数组的提示?
我有一个后台服务正在运行,它正在将数据同步到我的服务器。 泄漏发生在以下代码中: 内存分析器显示: stockserv.datasyncer.jobexecutor@0x135f6550上的线程保留了总大小为18.603.056(37,90%)字节的局部变量。内存累积在“”加载的“java.lang.Object[]”的一个实例中。 JobExecutor->Arraylist->Object[2