【发布时间】:2015-02-26 12:59:36
【问题描述】:
我有一个关于使用类和内存使用的问题。 我正在努力学习更多地使用课程。
dim test as class1
for i as integer = 0 to 10
test = new class1
test.attribute = i
next
上面的代码会给我留下类“class1”的多个实例吗? 我是这样,我如何在设置新课程之前销毁课程? 还是设置“test = new class1”会破坏前一个?
我试过从内存使用情况来计算,但我不能。
这门课不是一次性的,所以我做不到
for i as integer = 0 to 10
using test as new class1
test.attribute = i
end using
next
【问题讨论】:
-
您正在覆盖不是对象而是对它的引用的变量的值。前一个对象已准备好被垃圾回收,因为它不再被引用。您不需要处置它,因为它不包含非托管资源。所以实际上第一个代码绝对没问题,除了你没有对对象做任何事情。如果您将它们添加到列表中,它们仍会被引用,因此不会被垃圾收集器触及。
-
好的,如果我在他的类中定义一个列表,然后在循环中将它们添加到列表中,我会得到很多类的实例吗?例如,如果我正在创建一个包含约 1.000 个对象实例的大型 json/xml 文件,例如说它是一个电影数组。我应该在序列化它之前执行“将电影列表作为新列表(电影)”并将我的电影类的所有 1.000 个实例添加到它,还是会导致使用大量内存?如何更好地做到这一点?我目前正在创建一个 json 文件,其中包含一个包含我的类的 20.000 个实例的数组...
-
1000 个对象不需要大量的内存。不要(过早地)优化不需要优化的代码。
标签: .net vb.net memory memory-management memory-leaks