|
|
1
5
垃圾回收通过保证内存分配从不使用别名来强制内存分配器的类型安全。也就是说,如果一段内存当前被视为一个类型
现在,如果内存分配器允许手动
这并不是说这是不可能的;如果可以表示单个引用类型,则可以手动管理它。但是在那一点上,停止使用GC语言或者干脆不用担心它会更容易。 |
|
|
2
10
具有自动内存管理的语言旨在提供实质性的内存安全保证,这是任何手动内存管理所不能提供的。
|
|
|
3
1
打电话
当运行时环境引用
|
|
|
4
1
|
|
|
5
0
有趣的是,您确实可以通过System.GC访问垃圾收集器——尽管从我阅读的所有内容来看,强烈建议您允许GC管理自己。
也就是说,除非我知道引擎盖下到底发生了什么,否则我不会为System.GC操心。在本例中,第三方供应商的建议“修复”了我正在处理的关于他们代码的问题。但我不禁要问,这是否真的是一个解决办法,为他们的坏代码。。。 |
|
|
6
0
如果您处于“不想依赖GC是聪明的”的情况,那么很可能您为您的任务错误地选择了框架。在.net中,您可以稍微操纵GC( http://msdn.microsoft.com/library/system.gc.aspx 我认为你不能免费打电话,因为你开始做GC的一项任务。GC的效率可以在某种程度上得到总体保证,当它以它认为最好的方式做事时,当它决定的时候,它就会这样做。如果开发人员干扰GC,可能会降低它的整体效率。 |
|
7
0
这个
答案是,但我想到的是,如果你能
当然,一个可能的解决办法是
|
|
|
8
0
许多其他答案很好地解释了GC是如何工作的,以及在针对提供GC的运行时系统编程时应该如何思考。 我想添加一个技巧,我试图记住在GC'd语言编程时。规则是“尽快删除指针很重要”,删除指针意味着我不再指向我不再使用的对象。例如,在某些语言中,可以通过将变量设置为Null来实现这一点。这可以看作是对垃圾收集器的一个提示,即只要没有其他指向该对象的指针,就可以收集该对象。 |
|
|
9
0
你为什么要使用
一种方法是调用垃圾收集器,或者让它在系统需要时运行。在这种情况下,如果无法访问大块内存,它将被释放(现代垃圾收集器非常聪明。)这意味着,如果不释放它,它仍然可以被访问。
因此,如果你能摆脱它与
语言可以防止双重释放或试图释放未分配的内存,但避免悬空指针的唯一方法是取消指针
|
|
|
10
0
在绝大多数垃圾收集语言和vm中,提供
原因主要有两个
关于指针
所以我们有充分的理由不这样做
|
|
|
11
-1
|