以下の最小限のコードでわかるように、私は、JAVAオブジェクトが終了したときに、テスト変数に割り当てられたオブジェクトが割り当てられないようにしたい。このオブジェクトの割り当てを解除するにはどうすればよいですか? null
とsystem.gc
を使用しましたが、オブジェクトの割り当てを解除することはできません。Javaで割り当てられたオブジェクトを解放するには?
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();
}
}
}
明示的には使用できません。 –
上記のコメントを少し明確にする:[この質問を読む](http://stackoverflow.com/questions/66540/when-does-system-gc-do-anything)。基本的に、 'System.gc()'呼び出しはJVMのヒントに過ぎません。おそらく、それが気に入ったらガベージコレクションを実行するべきでしょう。しかし、圧力はありません。 – Phylogenesis
**「**働かないでください」という意味の**質問を**編集してください。オブジェクトを「解放」していないと思っているのは何を見ているのですか? 「フリー」はCのコンセプトなので、ここではそれはどういう意味ですか? – slim