因此,如果我理解得很好,垃圾收集会自动释放程序不再使用的对象。就像 java 中的垃圾收集器。
我听说在像 C 这样不支持垃圾回收的语言中,程序可能会发生内存泄漏并随后耗尽内存。
那么程序员在使用像 C 这样不支持垃圾回收的语言时犯的错误是什么?我猜想在对象不再使用后不会释放它们。但是,由于缺少垃圾收集器,我们只能犯这些错误吗?
最佳答案
分配你需要的东西
不取消分配您不再需要的东西(因为您没有很好地跟踪分配/使用/释放)
重新分配已存在事物的新实例(未正确跟踪的副作用)
取消分配您已经释放的内容
取消分配不存在的东西(空指针)
可能还有更多。关键是:管理内存很棘手,最好使用某种跟踪机制和分配/释放抽象来处理。因此,您不妨将其内置到您的语言中,这样它可以使您轻松愉快。手动内存管理并不是世界末日——它当然是可行的——但现在,除非你正在编写实时代码、硬件驱动程序,或者(也许,可能)最新的超优化核心代码游戏,那么体力劳动是不值得的,除非作为学术练习。
关于java - 垃圾收集与非垃圾收集编程语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1424660/