Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中释放已分配的对象?_Java_Memory Management - Fatal编程技术网

如何在java中释放已分配的对象?

如何在java中释放已分配的对象?,java,memory-management,Java,Memory Management,正如在下面的最小代码中所看到的,我希望当JAVA对象完成时,测试变量中分配的对象是未分配的。如何取消分配此对象? 我使用了null和system.gc,但它们无法取消对象的分配 package chatclient; /** * * @author root */ import java.io.IOException; public class ChatClient { private void run() throws IOException { long t

正如在下面的最小代码中所看到的,我希望当JAVA对象完成时,测试变量中分配的对象是未分配的。如何取消分配此对象? 我使用了
null
system.gc
,但它们无法取消对象的分配

package chatclient;
/**
 *
 * @author root
 */
import java.io.IOException;


public class ChatClient {
    private void run() throws IOException {
        long test[]=new long[10000000];
        test[10000]=100;
        // Process all messages from server, according to the protocol.
        test=null;
        System.gc();
    }

    @Override
    protected void finalize() throws Throwable {
        super.finalize(); //To change body of generated methods, choose Tools | Templates.
    }

    /**
     * Runs the client as an application with a closeable frame.
     */
    public static void main(String[] args) throws Exception {
        while(true){
            ChatClient client = new ChatClient();
            client.run();
        }
    }
}
Java是一种垃圾收集语言。它不提供显式释放内存的方法。相反,如果无法访问某个对象,则该对象是垃圾收集的候选对象,当运行时的GC算法确定它需要空间时,该对象将被删除

现代版本的Java中的GC算法非常复杂,性能也很高。但是,当内存使用率未达到配置限制时,不从堆中删除对象是很正常的


这对程序员来说是一个很大的好处——大多数时候你根本不需要担心内存管理。但是,如果您在非常紧张的内存环境中运行,Java可能不是适合您的工具。

您不能明确地这样做。请稍微澄清一下上面的评论:。基本上,
System.gc()
调用只是对JVM的一个提示,如果JVM喜欢,它可能会运行垃圾收集。不过没有压力。请编辑问题,说出你所说的“不工作”是什么意思。你在看什么使你相信这个物体没有被“释放”?既然“free”是一个C概念,你在这里说它是什么意思?