7得票5回答
如何处理我们没有引用的一次性对象?

如果你有一个画笔和钢笔,如下所示: Brush b = new SolidBrush(color); Pen p = new Pen(b); 然后像这样处理它们: b.Dispose(); p.Dispose(); 如果有以下代码:Pen p = CreatePenFromColo...

21得票2回答
当垃圾收集器在堆中移动数据时,引用是否会被更新?

我读到GC(垃圾回收器)为了性能原因移动堆中的数据,但我不太明白为什么,因为它是随机访问内存,也许是为了更好地顺序访问,但我想知道当堆中发生这种移动时,栈中的引用是否会更新。但也许偏移地址保持不变,而垃圾收集器会移动数据的其他部分,但我不确定。 我认为这个问题涉及实现细节,因为并非所有垃圾收...

10得票2回答
PowerShell 管道执行时不进行垃圾回收

更新:以下错误似乎已经在PowerShell 5中得到解决。该错误仍然存在于3和4中。因此,除非您使用PowerShell 2或5,否则请勿使用管道处理任何巨大的文件。 考虑以下代码片段:function Get-DummyData() { for ($i = 0; $i -lt...

8得票2回答
一个简单的垃圾回收算法,适合用于简单解释器的实验?

我一直在尝试编程语言设计,并且现在需要实现一个垃圾回收系统。首先想到的是引用计数,但这无法处理引用循环。大多数搜索算法的页面都是关于调整现有语言中垃圾收集器的参考资料,例如Java。当我找到描述特定算法的内容时,通常没有足够的实现细节。例如,大多数描述包括“当程序内存不足时……”,这在具有充足...

13得票5回答
为什么JVM在引用计数为0时不立即销毁资源?

我一直想知道为什么Java中的垃圾回收器会在感觉合适的时候自行激活,而不是执行:if(obj.refCount == 0) { delete obj; } Java采用的方式有哪些重要的优势是我忽略了的吗? 谢谢

8得票10回答
在循环中使用StringBuilder的Remove方法比创建一个新的StringBuilder更节省内存吗?

在C#中,哪个选项更节省内存:选项1还是选项2? public void TestStringBuilder() { //potentially a collection with several hundred items: string[] outputStrings =...

9得票1回答
在Android中,使用多个SpanObjects还是多个TextViews更好?

我有一个包含TextView的ListView,在每个TextView中有多个项目,每个项目都有简短的描述。为了对项目和描述应用不同的样式,我使用了多个span对象:ClickableSpan,ForegroundColorSpan,BackgroundColorSpan,AbsoluteSi...

84得票2回答
ASP MVC:什么时候调用IController的Dispose()方法?

我正在对一个比较大的MVC应用进行重构/加速优化。该应用已经在生产环境运行了几个月,最近开始出现等待连接池中连接超时的情况。我已经追踪到问题所在,是因为连接没有被正确地释放。 鉴于此,我已经对我的基础控制器(base controller)做出如下更改:public class MyBase...

24得票4回答
收回垃圾(GC.Collect)是否有必要?

阅读这篇旧但经典的文档编写高性能托管应用程序 - 入门指南,我看到以下声明: 引用: GC是自我调整的,根据应用程序的内存要求进行调整。在大多数情况下,通过编程方式调用GC会妨碍该调整。“帮助”GC通过调用GC.Collect很可能不会提高应用程序的性能。 我正在处理在某一时间点消耗大量内...

21得票7回答
GC.Collect()

好的,我读了一些相关主题,现在让我们来假设一个情况。假设我有一个应用程序,在这个应用程序中,我会经常点击一个按钮,然后会发生很多事情,持续几分钟,然后它可能会闲置1小时,也可能只是1分钟。那么在这整个过程之后调用GC.Collect会是一个不错的选择吗?我的意思是,我知道此时我将不会使用我的应...