socke服务端运行两周后假死,收不到信息,重启后恢复,不明白哪里有问题,应该如何修改
package net.huadong.citos.service;
import com.alibaba.fastjson.JSONObject;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class Main {
public static final int port = 9001;
public static void main(String[] args) throws IOException {
new HandlerThread();
}
private static class HandlerThread implements Runnable {
private Socket socket;
ServerSocket serverSocket ;
public HandlerThread() {
try {
serverSocket = new ServerSocket(port);
System.out.println("serverSocket "+System.currentTimeMillis());
} catch (IOException e) {
e.printStackTrace();
}
new Thread(this).start();
}
@Override
public void run() {
while(true) {
try {
socket = serverSocket.accept();
System.out.println("serverSocket.accept :"+System.currentTimeMillis());
InputStream inputStream = socket.getInputStream();
byte[] bytes = new byte[1024];
int len = 0;
int bytesWritten = 0;
StringBuilder sb = new StringBuilder();
while ((len = inputStream.read(bytes)) != -1) {
sb.append(new String(bytes, 0, len, "GB2312"));
bytesWritten += len;
}
System.out.println("inputStream.read(bytes):"+System.currentTimeMillis());
String str = sb.toString();
String result = str.substring(38, str.length() - 3);
System.out.println(result);
dealMessage t = new dealMessage();
t.JdbcDemo(result);
inputStream.close();
socket.close();
} catch (Exception e) {
e.getMessage();
}
}
}
}
}
有看下程序的内存吗
虽然有垃圾回收机制,但是回收的时间点不一定