这可能是一个非常具体的问题,但我是那种看到什么就会问的人。尽管垃圾回收运行时提供了内存和生命周期管理的诸多好处,但是否存在由应用程序与其垃圾回收器之间的竞态条件引起的程序不确定性的显着案例?是否已经出现了一种防御性编程的整体思路来应对这种情况?当然,习惯于RAII的程序员在GC的存在下必须学习一些教训。
这可能是一个非常具体的问题,但我是那种看到什么就会问的人。尽管垃圾回收运行时提供了内存和生命周期管理的诸多好处,但是否存在由应用程序与其垃圾回收器之间的竞态条件引起的程序不确定性的显着案例?是否已经出现了一种防御性编程的整体思路来应对这种情况?当然,习惯于RAII的程序员在GC的存在下必须学习一些教训。
垃圾回收的问题是它只管理内存资源。不幸的是,程序员必须管理许多其他类型的资源:
仅举几例。要成功管理这些资源,确实需要 RAII 习惯用法中体现的概念。
我认为您对自动垃圾回收的工作原理存在误解。在应用程序和正确实现的垃圾收集器之间不存在竞争条件,即使在原则上也是如此。垃圾收集器只会回收应用程序无法访问的对象。
由于两者中只有一个可以“拥有”给定的对象,因此不可能发生竞争条件。
同样也看一下这个或许可以帮助你回答问题。我的意见是好的阅读材料。