[Mono-bugs] [Bug 50916][Wis] Changed - GC does not see objs put into an array as dead till array's method is out of scope
bugzilla-daemon@bugzilla.ximian.com
bugzilla-daemon@bugzilla.ximian.com
Thu, 13 Nov 2003 12:33:26 -0500 (EST)
Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.
Changed by bmaurer@users.sf.net.
http://bugzilla.ximian.com/show_bug.cgi?id=50916
--- shadow/50916 2003-11-13 07:36:48.000000000 -0500
+++ shadow/50916.tmp.1424 2003-11-13 12:33:26.000000000 -0500
@@ -1,13 +1,13 @@
Bug#: 50916
Product: Mono/Runtime
Version: unspecified
OS: unknown
OS Details:
-Status: RESOLVED
-Resolution: NOTABUG
+Status: REOPENED
+Resolution:
Severity: Unknown
Priority: Wishlist
Component: misc
AssignedTo: mono-bugs@ximian.com
ReportedBy: bmaurer@users.sf.net
QAContact: mono-bugs@ximian.com
@@ -69,6 +69,22 @@
------- Additional Comments From vargaz@freemail.hu 2003-11-13 07:36 -------
The time when finalizers are called is not guaranteed. The reason
why the array objects are not freed is probably because the foofoo
array is reachable from the stack frame of 'blah'. Even if the
variable is nulled out, it is possibly that JIT generated temporaries
continue to refer to the array.
+
+------- Additional Comments From bmaurer@users.sf.net 2003-11-13 12:33 -------
+This test matches the MS docs and is tested in the Rotor GC test
+suite.
+
+As well, this could have a real performance impact in something such
+as:
+
+for (int i = 0; i < 5000; i++) {
+Foo [] bar = new Foo [500];
+for (int j = 0; j < bar.Length; j++)
+ bar [j] = new Foo ();
+}
+
+It seems none of the Foo's would EVER be deallocated, which could be
+a problem. Am going to play around w/ this some more later.