我在 .NET 中读到了关于 CLR 的内容:
当 CLR 加载时,堆被划分为 SOH 和 LOH。
当应用程序启动时,CLR 根据应用程序的大小将堆分配给应用程序。
LOH 堆具有 Gen0、Gen1 和 Gen2 区域。
这里 A 类的所有对象都分配在 Gen0 上,
问题
- CLR 如何知道堆中应用程序占用的大小?
假设 CLR 为Gen0区域分配了 4K 堆内存。鉴于下面的代码,这个单线程是否可以在 Gen0 上使用完整的 4K 内存?
collect = new List(); while(true) { collect.Add(new A()); new A(); new A(); } class A { int a = 0, b = 0; }