在java中有类似malloc / free的东西吗?

我从未见过这样的陈述,它是否存在于java世界中?

Java的malloc版本是new – 它创建了一个指定类型的新对象。

在Java中,为您管理内存,因此您无法显式deletefree对象。

Java有一个垃圾收集器。 这就是为什么你从来没有在你的代码中看到这样的陈述(如果你问我这很好)

在计算机科学中,垃圾收集(GC)是一种自动内存管理。 这是资源管理的一个特例,其中管理的有限资源是内存。 垃圾收集器或仅收集器尝试回收垃圾或由程序不再使用的对象占用的内存。 约翰麦卡锡于1959年左右发明了垃圾收集,以解决Lisp中的问题。

Java中没有直接的等价物:

C malloc创建一个无类型的堆节点,并返回一个指向它的指针,允许您根据需要访问内存。

Java没有非类型化对象的概念,并且不允许您直接访问内存。 你可以从Java到malloc获得的最接近的是new byte[size] ,但它会返回一个强类型对象,你只能将其用作字节数组。

C free释放堆节点。

Java不允许您显式释放对象。 Java中的对象释放完全掌握在垃圾收集器中。 在某些情况下,您可以影响GC的行为; 例如,通过为引用变量赋值null并调用System.gc() 。 但是,这并不会强制取消分配对象…并且是一种非常昂贵的方法。

如果你没有好处(tm)我想你可以通过JNI接口访问原始内存。 您可以在此处从Java程序中调用C程序。 当然,你必须在你的程序有权这样做的环境中运行(浏览器通常不允许这样做,除非它是自杀的)但你可以通过C指针访问对象。

我有点想知道原始问题的来源。 很久以前,我完全怀疑不需要C风格的内存管理和C风格的指针,但此时我才是真正的信徒。

new而不是malloc ,垃圾收集器而不是free。