質問編集履歴
2
追記:気づいたこと
title
CHANGED
File without changes
|
body
CHANGED
@@ -15,6 +15,9 @@
|
|
15
15
|
at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227)
|
16
16
|
at java.util.ArrayList.add(ArrayList.java:458)
|
17
17
|
at GetMsgThread.run(NChat.java:176)
|
18
|
+
|
19
|
+
追記:原因は不明のままですが、対処法については判明しました。SrcThreadのwhileループの1つ下のブロック、つまりforループの前にSystem.out.println()などのなんらかのメソッドを呼び出すと正常に作動することが分かりました。
|
20
|
+
しかし原因については一切の見当が付きません
|
18
21
|
###該当のソースコード
|
19
22
|
Java
|
20
23
|
```
|
1
依頼を受け一部追記しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,6 +6,15 @@
|
|
6
6
|
クライアントアプリごとにメッセージを貯めるスレッドのオブジェクトを生成するが、スレッドのrunメソッドのwhileループでメッセージを取得しようとするところでOutOfMemoryError:Java heap spaceがでてしまう、また、オブジェクトのコレクションにためたメッセージを他のスレッドから処理できなくなってしまう
|
7
7
|
原因と対策を教えてください
|
8
8
|
よろしくお願いします
|
9
|
+
追記:スタックトレース
|
10
|
+
Exception in thread "Thread-4" java.lang.OutOfMemoryError: Java heap space
|
11
|
+
at java.util.Arrays.copyOf(Arrays.java:3210)
|
12
|
+
at java.util.Arrays.copyOf(Arrays.java:3181)
|
13
|
+
at java.util.ArrayList.grow(ArrayList.java:261)
|
14
|
+
at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235)
|
15
|
+
at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227)
|
16
|
+
at java.util.ArrayList.add(ArrayList.java:458)
|
17
|
+
at GetMsgThread.run(NChat.java:176)
|
9
18
|
###該当のソースコード
|
10
19
|
Java
|
11
20
|
```
|
@@ -67,6 +76,34 @@
|
|
67
76
|
InputStreamをバッファにためて
|
68
77
|
inp()メソッドで返す
|
69
78
|
}
|
79
|
+
//Inpクラスの内容追記
|
80
|
+
class Inp{
|
81
|
+
String str=null;
|
82
|
+
BufferedReader br;
|
83
|
+
Inp(InputStream ist){
|
84
|
+
try{
|
85
|
+
InputStreamReader isp = new InputStreamReader(ist);
|
86
|
+
br = new BufferedReader(isp);
|
87
|
+
}catch(Exception e){
|
88
|
+
System.err.print(e);
|
89
|
+
}
|
90
|
+
}
|
91
|
+
String inp(){
|
92
|
+
try{
|
93
|
+
str = br.readLine();
|
94
|
+
}catch(Exception e){
|
95
|
+
System.err.print(e);
|
96
|
+
}
|
97
|
+
return str;
|
98
|
+
}
|
99
|
+
void inpcls(){
|
100
|
+
try{
|
101
|
+
br.close();
|
102
|
+
}catch(Exception e){
|
103
|
+
System.err.println(e);
|
104
|
+
}
|
105
|
+
}
|
106
|
+
}
|
70
107
|
```
|
71
108
|
|
72
109
|
###試したこと
|