- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
C# AddMemoryPressure 调用是否会添加一个连接到它被调用的特定对象?我已经看到它在我们的性能跟踪中出现了很多,我想每 10MB 左右对调用进行一次批处理,但是如果它检查堆栈以将压力信息附加到它认为正在分配的特定对象,那么它就不会'工作
最佳答案
AddMemoryPressure 仅告诉 GC 使用的内存多于 GC 可见的内存。它没有连接到任何对象。
使用 AddMemoryPressure 可能会导致清理更频繁地运行,但我不知道这对性能是好是坏。我认为这会增加清理在某事中间运行而不是仅在空闲时运行的风险。
文档中的这一行可能就是您所需要的
“在更复杂的情况下,非托管内存分配在托管对象的生命周期内发生显着变化,您可以调用 AddMemoryPressure 和 RemoveMemoryPressure 方法将这些增量更改传达给运行时。”
只要您删除的数量与添加的数量相同,您就可以随意调用这些方法。
关于C# AddMemoryPressure 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5297968/
C# AddMemoryPressure 调用是否会添加一个连接到它被调用的特定对象?我已经看到它在我们的性能跟踪中出现了很多,我想每 10MB 左右对调用进行一次批处理,但是如果它检查堆栈以将压力信
对非托管对象使用 Add/RemoveMemoryPressure 的正确方法是什么?我有一个非托管对象 - 但它大量使用了例如 STL 容器。我是否应该随着非托管对象总大小的每次变化不断更新托管 G
我在 MSDN 和 CLR via c# 上读到了这个问题。 假设我们有一个分配的 2Mb 非托管 HBITMAP 和一个指向它的 8 字节托管位图。如果它永远无法对对象做任何事情,那么用 AddMe
我正在使用第 3 方 COM DLL 使用 C# 编写应用程序,此 dll 在非托管内存中创建大量资源(如位图、视频、数据结构)。在四处挖掘时,我遇到了以下对垃圾收集器的调用: GC.AddMemor
项目:Java、JNI (C++)、Android。 我将通过创建一个托管包装类来管理 native C++ 对象的生命周期,该包装类将持有一个指向 native 对象的指针(作为长成员),并将在其重
我目前正在调试我们用来在系统中显示图像之前用特定文本标记图像的方法。 标签方法目前看起来像这样: private static Image TagAsProductImage(Image image)
已解决:原来受影响的机器安装了 .NET 4.5 beta。 我有一个使用 .NET4 的 C# 应用程序在对 的调用中无限期死锁/挂起 GC.AddMemoryPressure(12000000)
我们为一个用 C# 编写的多媒体匹配项目编写了一个自定义索引引擎。 索引引擎是用非托管 C++ 编写的,可以以 std:: 集合和容器的形式保存大量非托管内存。 每个非托管索引实例都被一个托管对象包装
我的 .NET 应用程序在很短的时间内使用了非常多的 RCW(不到一秒内使用了数千个 RCW)。我可以使用以下性能计数器来衡量此行为: - 处理 -> 处理计数 - .NET CLR 内存 -> #
我是一名优秀的程序员,十分优秀!