パケットを受信しているときにガベージコレクションによって引き起こされる小さなラグを改善することで、パフォーマンスを向上させたいと考えています。上記Android - データグラムソケットガベージコレクションの改善
DatagramSocket sock;
try {
sock = new DatagramSocket(port);
sock.setReuseAddress(true);
} catch (SocketException e) { }
DatagramPacket pack = null;
byte[] buff = new byte[SIZE];
while(!sock.isClosed()){
try{
pack = new DatagramPacket(buff, buff.length());
sock.receive(pack);
} catch (IOException e) { }
}
コード(私のLogCatビューアに見られるように)ごみを収集するためのコールがたくさんあることが終わることを除いてうまく機能:私はそうは以下のようにデータを受信し、単純なDatagramSocket
を持っています。ガベージコレクションを避けるために、メモリを割り当てないようにしたいのですが、誰もが上記のコードでそれを行い、それでも同じ結果を得るよい方法を見ていますか?
私はthis threadとthis threadを見ましたが、私の特定の状況にどのようにマッピングされるかはわかりません。私はまた、GCを呼び出すためにthis suggestionを見ましたが、この場合、GCはその間に何度も実行されています。
ご意見をいただければ幸いです!
「new」を作成すると、オブジェクトが不要になったらGCが起動します。ループでは 'new'を行います=不要になったオブジェクトがたくさんあります。それを避けてオブジェクトを再利用することができれば、GCが少なくなります。 @jellyfication答えの方法を参照してください – zapl