当我执行下面的程序时,内存增加得非常快,所以我想在名为" secundary_function"的函数中使用了内存。没有解放。如果我复制元素,我会将问题附加到列表中,或者如果我不使用$('button.buttonA').click(function(){
var cursorPos = $('textarea.formInsideMenu').prop('selectionStart');
var textCurrent = $('textarea.formInsideMenu').val();
var textBefore = textCurrent.substring(0, cursorPos);
var textAfter = textCurrent.substring(cursorPos, textCurrent.length);
$('textarea.formInsideMenu').val(textBefore + 'a' + textAfter);
var elem = document.getElementsByClassName("formInsideMenu")[0];
elem.setSelectionRange(cursorPos, cursorPos + 1);
});
,问题就会消失。我想了解为什么副本在这里是必要的以及为什么secundary_function
会对使用的内存产生影响..
secundary_function
感谢您的回答,对不起我的英语!
答案 0 :(得分:2)
在这一行:
liste_images.append(images[0])
images[0]
创建3000x25x25 images
数组的视图。这意味着您附加到images[0]
的{{1}}的结果会引用整个3000x25x25数组。这个大数组不会被垃圾收集。当你复制时,你创建一个新的25x25数组,并且可以在for循环的下一次迭代中释放大数组。