java 安卓应用程序在收到1或2条消息后崩溃
我正在尝试用C#中的客户端socket与服务器socket通信,我使用字节数组发送和接收消息。首先,消息的长度通过字节数组发送,然后通过字节数组发送实际消息,在接收端也是如此
但我的应用程序在收到1或2条消息后崩溃,显示异常“未能分配1936942432字节分配,1678239个可用字节和510MB,直到OOM,目标内存占用3356479,增长限制536870912”,即使我在收到数据后释放字节。问题是什么?我怎样才能克服这个问题
这是我的接收代码:
DataInputStream dist;
final InputStream in = s.getInputStream();
dist = new DataInputStream(in);
final byte[] readMsgLen = new byte[4];
dist .read(readMsgLen,0,4);
final int length = byteArrayToInt(readMsgLen);
// byteArrayToInt is a function that converts byte array to int
data = new byte[length];
mn.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(mn, "Message Length : "+length , Toast.LENGTH_LONG).show();
}
});
dist.readFully(data,0,data.length);
final String msg =new String(data);
if(msg.compareTo("Executed Successfully!") == 0){
mn.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(mn, "Message: "+msg , Toast.LENGTH_LONG).show();
Arrays.fill(readMsgLen,(byte)0);
Arrays.fill(data,(byte)0);
}
});
}
else {
Intent i = new Intent(mn, imageViewer.class);
i.putExtra("Data", msg);
Arrays.fill(readMsgLen,(byte)0);
Arrays.fill(data,(byte)0);
mn.startActivity(i);
}
共 (0) 个答案