我正在 MVC 设计模式中构建一个系统。我需要创建一系列控制器。稍后我可能希望能够在不再需要这些控制器时从内存中删除它们。控制器是使用 new 关键字创建的,所以我遇到了如何存储对对象的引用的问题。我决定使用数组。当我创建它们时,它们被添加到一个数组中,当我销毁时,我循环遍历数组并删除。我想确保我没有泄漏内存。假设我没有创建对控制器对象的其他引用,这将有效地使它们成为垃圾收集的候选对象:
//creating the objects and storing them
//create image controller & modelfor each image (model injected as a dependency)
for (var i = 0; i < imageData.galleryImages.length; i++) {
imageControllerArray.push( new ImageController(someParam, new model()));
};
//here I want to destroy the controllers
while(imageControllerArray.length){
imageControllerArray.pop(); //would this do it?
//delete imageControllerArray.pop(); //What about this?
// imageControllerArray.pop().destroy() //where each controller deletes itself
}
解决这个问题的最佳方法是什么?有什么建议吗?我知道我需要做的是删除对控制器的任何引用而不是对象本身。我担心我的方法可能是在某个全局空间上创建对象,因此仅删除数组引用实际上不会释放对象以进行垃圾收集。