我有一個簡單的UDP服務器,它創建一個處理傳入數據的新線程。當通過發送大約100個數據包/秒進行測試時,我注意到它的內存使用量不斷增加。下面的代碼是否有任何泄漏?使用Java UDP服務器增加內存
這是服務器的代碼。
public class UDPServer
{
public static void main(String[] args)
{
UDPServer server = new UDPServer(15001);
server.start();
}
private int port;
public UDPServer(int port)
{
this.port = port;
}
public void start()
{
try
{
DatagramSocket ss = new DatagramSocket(this.port);
while(true)
{
byte[] data = new byte[1412];
DatagramPacket receivePacket = new DatagramPacket(data, data.length);
ss.receive(receivePacket);
new DataHandler(receivePacket.getData()).start();
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
這是處理數據的新線程的代碼。現在,run()方法不起任何作用。
public class DataHandler extends Thread
{
private byte[] data;
public DataHandler(byte[] data)
{
this.data = data;
}
@Override
public void run()
{
System.out.println("run");
}
}
JConsole在這種情況下會更好,因爲它包含了所有伊甸園,倖存者和舊版堆大小的視圖。另外,你可以強烈建議一個gc。 – 2010-06-10 04:30:43