我从未见过这样的语句,它在Java世界中真的存在吗?
Java中的malloc
版本是new
-- 它创建一个指定类型的新对象。
在Java中,内存管理是自动进行的,因此您不能显式地delete
或free
一个对象。
Java有垃圾回收功能,这就是为什么你的代码中从来不会看到这样的语句(如果你问我的话,这很好)
在计算机科学中,垃圾回收(GC)是一种自动内存管理形式。它是资源管理的一个特殊情况,被管理的有限资源是内存。垃圾回收器或者只是收集器,试图回收垃圾或者是程序不再使用的对象所占用的内存。垃圾回收是由John McCarthy在1959年左右发明的,用于解决Lisp中的问题。
new
代替malloc
,垃圾回收器代替free。
Java中不存在直接的等价物:
C语言中的malloc
创建一个未定义类型的堆节点,并返回指向它的指针,使您可以自由地访问内存。
Java没有未定义类型对象的概念,也不允许您直接访问内存。在Java中最接近malloc
的方法是new byte[size]
,但它会返回一个强类型的对象,您只能将其用作字节数组。
C语言中的free
释放了一个堆节点。
Java不允许您显式释放对象。在Java中,对象的释放完全由垃圾回收器控制。在某些情况下,您可以影响GC的行为;例如,通过将null
赋值给引用变量并调用System.gc()
。但这并不会强制释放对象...而且这是一种非常昂贵的方式。