【发布时间】:2016-04-02 13:29:54
【问题描述】:
我的问题非常清楚.. 如果它不收集垃圾会发生什么
以及为什么在 c++ 中不会发生这种情况
【问题讨论】:
-
是什么让你认为它不会在 C/C++ 中发生?
我的问题非常清楚.. 如果它不收集垃圾会发生什么
以及为什么在 c++ 中不会发生这种情况
【问题讨论】:
如果不收集陈旧的对象,您将遇到 OutOfMemoryError。如果你不清理旧数据,这也会发生在 C++ 中(错误可能不称为 OutOfMemoryError,但我猜结果是一样的)。
【讨论】:
malloc() 将失败并返回 NULL。在 C++ 中,new 将抛出 bad_alloc,除非指定了 (nothrow),在这种情况下将返回 NULL。
malloc()),您绝对应该这样做!
它确实发生在 C/C++ 中。以不同的方式。在 C/C++ 中,程序员的责任更多地在于跟踪分配的内存并释放它。程序员可以通过指针的形式直接访问内存。在java中,它对程序员都是隐藏的。您不需要跟踪内存,JVM 以垃圾收集的形式为您完成。这并不意味着您可以巧妙地为对象分配内存。全局对象被长期保留,如果 GC 不能及时到达,内存超出限制,发生 OutOfMemoryException。
【讨论】: