패킷을받는 동안 가비지 수집으로 인한 작은 지연을 개선하여 성능을 향상시키고 싶습니다. 그래서 같은 데이터를 수신하는 간단한 DatagramSocket
이 있습니다안드로이드 - 데이터 그램 소켓 가비지 컬렉션 향상
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) { }
}
위의 코드는 (내 로그 캣 뷰어에서 볼 수 있듯이) 쓰레기를 수집하는 전화를 많이되는이 끝나는 것을 제외하고 잘 작동합니다. 가비지 컬렉션을 피하기 위해 메모리를 할당하지 않으려 고하지만 위의 코드를 사용하여 동일한 결과를 얻는 좋은 방법은 누구나 볼 수 있습니까?
나는 this thread과 this thread을 보았지만 어떻게하면 내 특별한 상황에 어떻게 대응할 것인지 확신 할 수 없었다. 또한 GC를 호출하는 this suggestion을 보았습니다. 그러나이 경우 GC는 중간에 여러 번 실행되고 있습니다.
의견을 보내 주시면 대단히 감사하겠습니다.
"new"를 작성하면 객체가 더 이상 필요하지 않으면 GC가 생성됩니다. 루프에서'new' = 더 이상 필요하지 않은 많은 객체를합니다. 이를 피하고 객체를 다시 사용할 수 있으면 GC가 줄어 듭니다. @jellyfication 대답 방법보기 – zapl