Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net OOP-内存使用和大型数学对象(类)_Vb.net_Visual Studio 2010_Oop_Class - Fatal编程技术网

Vb.net OOP-内存使用和大型数学对象(类)

Vb.net OOP-内存使用和大型数学对象(类),vb.net,visual-studio-2010,oop,class,Vb.net,Visual Studio 2010,Oop,Class,我开始将许多涉及昂贵迭代数学例程的大型非OOP子例程转移到它们自己的类中。每当我想使用一个较大的子例程(现在是类)时,我都将它们创建为一个对象,假设一旦不再使用该对象(因为调用代码已退出),它们将从内存中删除 我的问题是:如果使用按钮或触发子例程实例化一个对象,并且该例程中的代码运行,那么一旦代码完成,该对象是否会通过垃圾收集从内存中被杀死 另外,我不想使用多线程,因为用户一次不会运行多个类 一旦代码完成,该对象是否会通过垃圾收集从内存中被杀死 不,不一定 一旦代码完成,将不再有对对象的活动引用

我开始将许多涉及昂贵迭代数学例程的大型非OOP子例程转移到它们自己的类中。每当我想使用一个较大的子例程(现在是类)时,我都将它们创建为一个对象,假设一旦不再使用该对象(因为调用代码已退出),它们将从内存中删除

我的问题是:如果使用按钮或触发子例程实例化一个对象,并且该例程中的代码运行,那么一旦代码完成,该对象是否会通过垃圾收集从内存中被杀死

另外,我不想使用多线程,因为用户一次不会运行多个类

一旦代码完成,该对象是否会通过垃圾收集从内存中被杀死

不,不一定


一旦代码完成,将不再有对对象的活动引用。这意味着它将有资格进行垃圾收集,但这不会立即发生。它将在该点之后的某个适当时间被收集。

垃圾收集器在需要运行时运行,而不是在方法结束时运行。任何有关.NET编程的介绍性书籍都会很好地介绍这一点,请务必从您的本地库中查看一本。您可能希望指定“大型子例程”的含义。一个包含数百行源代码的方法,或者一个使用大量内存的方法(对于大型数组、内存流等等)。此外,您可能希望更具体地说明如何定义“大”。