Skip to content

Commit 5ff9164

Browse files
committed
Force GC from generation 0 to generation 2
1 parent 6d5871b commit 5ff9164

File tree

12 files changed

+48
-16
lines changed

12 files changed

+48
-16
lines changed

src/Compatibility/Core/tests/Android/Issues.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ public async Task TextCellDisposed()
122122

123123
if (m == 1)
124124
{
125-
GC.Collect();
125+
GC.Collect(2);
126126
}
127127

128128
model.Text = model.Text == text1 ? text2 : text1;
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
using System;
2+
using System.Threading.Tasks;
3+
using Microsoft.Maui.Controls;
4+
using Microsoft.Maui.Controls.Handlers.Items;
5+
using Xunit;
6+
7+
namespace Microsoft.Maui.Controls.Core.UnitTests
8+
{
9+
public class CollectionViewTests : BaseTestFixture
10+
{
11+
[Fact, Category(TestCategory.Memory)]
12+
public async Task CanCollectEmptyView()
13+
{
14+
var collectionView = new CollectionView { IsPlatformEnabled = true };
15+
collectionView.EmptyView = new View();
16+
17+
var weakReference = new WeakReference(collectionView.EmptyView);
18+
19+
collectionView.EmptyView = null;
20+
21+
await Task.Yield();
22+
GC.Collect(2);
23+
GC.WaitForPendingFinalizers();
24+
25+
Assert.False(weakReference.IsAlive);
26+
}
27+
}
28+
}

src/Controls/tests/Core.UnitTests/TestHelpers.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@ internal static class TestHelpers
88
public static async Task Collect()
99
{
1010
await Task.Yield();
11-
GC.Collect();
11+
GC.Collect(2);
12+
GC.WaitForPendingFinalizers();
13+
14+
await Task.Yield();
15+
GC.Collect(2);
1216
GC.WaitForPendingFinalizers();
1317
GC.Collect(2, GCCollectionMode.Forced, true);
1418
GC.WaitForPendingFinalizers();

src/Controls/tests/TestCases.HostApp/Utils/GarbageCollectionHelper.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public static void Collect()
77
GC.Collect();
88
GC.WaitForPendingFinalizers();
99

10-
GC.Collect();
10+
GC.Collect(2);
1111
GC.WaitForPendingFinalizers();
1212
}
1313

@@ -17,7 +17,7 @@ public static async Task WaitForGC(int timeout, params WeakReference[] reference
1717
{
1818
bool referencesCollected()
1919
{
20-
GC.Collect();
20+
GC.Collect(2);
2121
GC.WaitForPendingFinalizers();
2222

2323
foreach (var reference in references)

src/Controls/tests/Xaml.UnitTests/Issues/Maui22036.xaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public async Task StyleWithTriggerLeak([Values] XamlInflator inflator)
3636

3737
var pagewr = new WeakReference(new Maui22036(inflator));
3838
await Task.Delay(10);
39-
GC.Collect();
39+
GC.Collect(2);
4040
Assert.IsNull(pagewr.Target, "Page leaked");
4141
}
4242
}

src/Core/tests/DeviceTests.Shared/HandlerTests/TestBase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ protected static async Task WaitForGC()
3434
GC.Collect();
3535
GC.WaitForPendingFinalizers();
3636
await Task.Delay(10);
37-
GC.Collect();
37+
GC.Collect(2);
3838
GC.WaitForPendingFinalizers();
3939
await Task.Delay(10);
4040
}

src/Core/tests/DeviceTests/Services/ImageSource/ImageSourceServiceTests.iOS.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ static Task<bool> TryCollectFile(string bitmapFile)
129129

130130
for (var i = 0; i < GCCollectRetries; i++)
131131
{
132-
GC.Collect();
132+
GC.Collect(2);
133133

134134
// TODO: implement a "native" caching system everywhere on ios and update this
135135
}

src/Core/tests/UnitTests/MauiContextTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public void AddSpecificIsNotWeak()
5050

5151
DoAdd(context);
5252

53-
GC.Collect();
53+
GC.Collect(2);
5454
GC.WaitForPendingFinalizers();
5555

5656
Assert.NotNull(context.Services.GetService<TestThing>());
@@ -71,7 +71,7 @@ public void AddWeakSpecificIsWeak()
7171

7272
DoAdd(context);
7373

74-
GC.Collect();
74+
GC.Collect(2);
7575
GC.WaitForPendingFinalizers();
7676

7777
Assert.Null(context.Services.GetService<TestThing>());

src/Core/tests/UnitTests/TestHelpers.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public static async Task<bool> WaitForCollect(this WeakReference reference)
1010
for (int i = 0; i < 40 && reference.IsAlive; i++)
1111
{
1212
await Task.Yield();
13-
GC.Collect();
13+
GC.Collect(2);
1414
GC.WaitForPendingFinalizers();
1515
}
1616

src/Core/tests/UnitTests/Views/BorderTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public async Task BorderStrokeShapeSubscribed()
6464
};
6565

6666
await Task.Yield();
67-
GC.Collect();
67+
GC.Collect(2);
6868
GC.WaitForPendingFinalizers();
6969
GC.KeepAlive(border);
7070

@@ -87,7 +87,7 @@ public async Task BorderStrokeSubscribed()
8787
};
8888

8989
await Task.Yield();
90-
GC.Collect();
90+
GC.Collect(2);
9191
GC.WaitForPendingFinalizers();
9292
GC.KeepAlive(border);
9393

0 commit comments

Comments
 (0)