В настоящее время я пишу сетевое задание для одного из моих классов в колледже, и у меня возникла небольшая проблема.Это назначение состоит из настройки набора узлов, которые взаимодействуют друг с другом через сокеты, используя предопределенный набор сообщений.Эти сообщения должны быть в состоянии быть составлены из байтовых данных, которые отправляются обратно и четвертым из сокетов.
Вот пример метода внутри одного из сообщений, который обрабатывает данные из байта []:
public void processData(byte [] data) throws IOException
{
DataInputStream stream = new DataInputStream(new ByteArrayInputStream(data));
//get the status code
statusCode = (byte)stream.read();
System.out.println("Status Code: "+statusCode);
//get the additional info
byte [] additionalInfoData = new byte[stream.readInt()];
stream.read(additionalInfoData, 0, additionalInfoData.length);
additionalInfo = new String(additionalInfoData);
System.out.println("additionalInfo: "+statusCode);
stream.close();
}
Когда я запускаю программу, и она достигает этой точки (этопосле первого сообщения) оно останавливается на
byte [] additionalInfoData = new byte[stream.readInt()];
с этим исключением:
Exception in thread "Thread-1" java.lang.OutOfMemoryError: Java heap space
at cdn.wireformats.RegisterResponse.processData(RegisterResponse.java:58)
at cdn.wireformats.RegisterResponse.<init>(RegisterResponse.java:31)
at cdn.wireformats.WireFormatFactory.getWireFormatMessage(WireFormatFactory.java:22)
at cdn.communications.Link.readMessage(Link.java:62)
at cdn.communications.Link.run(Link.java:98)
at java.lang.Thread.run(Thread.java:679)
Кто-нибудь знает, как это исправитьпроблема?Я неправильно читаю данные из байта []?