请来讨论:Java中的垃圾收集与C++的直接内存管理那个更好?
本人认为:
首先,他们都是对于heap(堆)的操作。都是用于回收不再使用的堆内存,Java的垃圾处理机制是由JVM自动保存每个堆的句柄,定时向前移动指针,形成流水线,以方便下一次的内存分配,而且防止了分页错误的发生。而C++的直接内存管理中,如果程序员在使用完某个对象之后,忘记了回收内存,在需要给新的对象分配内存的时候,C++将在已经开辟但是没有回收的heap内存区域中轮训,并在其中选一个分配给它,这样也就造成效率的降低。
其次,Java中的垃圾收集机制可以减小程序的风险,使程序员可以专注于程序的功能,但同时也丧失了一定的效率;而C++的直接内存管理,则使程序员更清晰的了解程序的运作,但是对于程序的粗心,容易造成内存的泄漏。
最后,看到有些书上的描述,据说Java的垃圾收集机制并不是总能知道回收那些已经完成的堆内存区域,同样需要进行手工处理。