问题标签 [large-object-heap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3230 浏览

c# - 第三代对象和大对象堆之间的区别

大对象堆和 GC 第三代对象有什么区别?

0 投票
1 回答
1142 浏览

c# - LOH、WeakReferences、大对象的垃圾收集

在我的应用程序中,我需要将大文件(可能约为 250 MB)加载到内存中,我正在以一种懒惰的方式进行 - 当用户要求查看文件时 - 我正在加载它。之后,每次用户尝试访问该文件时,我都可以立即显示它,因为它已经位于内存中。所以,问题在于垃圾收集......我正在加载的每个文件,我都通过 WeakReference 加载,但是:我测试了几次,我能够将大约 3GB 加载到内存中(比应用程序变得不可用),但没有发生 GC。我无法调用 GC.Collect(2),因为我无法确定调用它的时间,所以如何告诉 GC 在好时机收集内存(弱引用)(该死,3GB 太多了……看来GC只是不做他的工作)热解决吗?我真的需要延迟加载,

0 投票
2 回答
1286 浏览

.net - 如何检测大对象堆是否导致内存不足异常

我的 .NET Windows 服务中出现 System.OutOfMemory 异常。我不确定是什么原因造成的。我怀疑大对象堆中有碎片,但我不确定。如何验证我的假设?

我可以使用各种调试器,但我应该在调试器中寻找什么?

谢谢

0 投票
6 回答
4361 浏览

.net - 大对象堆碎片:CLR有什么解决办法吗?

如果您的应用程序必须对大尺寸对象(> 85000 字节)进行大量分配/取消分配,最终会导致内存碎片,您的应用程序将抛出内存不足异常。

这个问题有什么解决方案,还是CLR内存管理的限制?

0 投票
1 回答
315 浏览

.net - 大字符串会导致大对象堆碎片吗?

大字符串(85kb+)会导致像大数组这样的大对象堆碎片吗?

0 投票
3 回答
5698 浏览

c# - 使用字节数组时的堆碎片

我有一个 C# 4.0 应用程序(单一生产者/单一消费者),它以块的形式传输大量数据。虽然没有新的内存分配,但一段时间后我的内存就用完了。

我使用 Redgate 内存分析器对内存进行了分析,那里有很多可用内存。它说由于碎片而无法使用空闲内存。

我使用阻塞集合作为缓冲区,使用字节数组作为成员:

如何避免托管内存碎片?

0 投票
1 回答
246 浏览

.net - LOH 内部需要

我知道,这是一个实现细节,有些人认为禁止对它们感兴趣。但我仍然想找到以下内容的参考和确认:

  1. 大对象堆维护一个段中空洞的空闲列表。它使用它来满足大对象的分配请求。这是否也意味着这样的分配可能比来自小对象堆的常规(仅分配指针增加)分配更昂贵?参考

  2. 在 32 位进程上,段大小的下限为 16MB。64 位进程的大小限制是多少?

备注:此问题不要求正确的对象设计(池)解决方案。

0 投票
2 回答
1972 浏览

c# - 大对象堆友好字典

我们有一个应用程序,它在几个 s 中保存大量对象Dictionary,其中一些对象在应用程序的生命周期内不断增长(具有大量工具的交易应用程序和不断增长的订单/交易)。

OutOfMemoryException由于大对象堆的碎片,我们遇到了s 的问题。

为了解决这个问题,我尝试编写一个“大”字典,它被实现为一个两级字典,其中所有叶字典都不够大,无法在 LOH 上分配。我使用了一致的散列算法来避免当单个存储桶变得太大时必须重新散列整个字典。一致的散列“圆圈”TreeDictionary来自 C5 集合库。

我的问题是,对于 C# 是否有更好的数据结构(或者可能是我所描述的更好的实现)?

更新

这是“大”字典的实现:https ://gist.github.com/956621

我知道这不是万无一失的,因为规范中既没有 LOH 堆阈值,也没有每个 Dictionary 条目的大小或缩放算法。但是,这是目前我能想到的最好的方法,以避免应用程序在中午崩溃。

0 投票
1 回答
615 浏览

asp.net - LOH 分析说 GC 根对象 (System.Object) 是内存泄漏的来源

我有一个HttpHandler经常被调用的。它Entity Framework用来完成它的任务。

此 Web 应用程序的已用内存增长缓慢w3p.exe(它有一个单独的应用程序池)。我用过ANTS memory profiler,那里有很多可用内存(LOH)。ANTS说这些是GC root对象。int我检查了我的代码,有一些string不能导致LOH

我追踪了泄漏的来源,但不幸的是它是System.Object具有很多null属性的类型。还有 a LinkedList、 some HashTables 和 a WeakHashTable

我怎样才能找到这个对象并修复LOH?回来true了怎么IsReusableHttpHandler

0 投票
3 回答
1140 浏览

c# - C#:如果需要内存,GC 会收集,还是会给出内存不足异常?

我的代码中有一个循环,它生成许多 byte[] 数组(每个数组大约 1 到 2 MB),用数据填充它们,然后丢弃引用。因此,即使引用只保留了很短的时间,我也可以看到私有工作集在增长。

现在,如果我尝试在循环后分配一个大数组(~ 400 MB),我会得到内存不足的异常吗?还是分配会强制 GC 收集瞬态数据?

谢谢!