基于以下问题,
http://stackoverflow.com/questions/23753342/java-memory-allocation-for-local-variables
我使用SerialPortEvent从串口读取数据
public String logtext = "";
public void serialEvent(SerialPortEvent evt) {
if (evt.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
StringBuilder sBuilder = new StringBuilder();
int length = input.available();
byte[] array = new byte[length];
int numBytes = input.read(array);
for (byte b : array) {
logText = new String(new byte[] {b});
sBuilder.append(logText);
}
//Finally i append the StringBuilder to JtextPane
.......
......
}
每次调用serialEvent时都会创建 new String(),每次都会创建新的实例,这会增加内存的使用量。在某些情况下,这个serialEvent将每秒调用一次。
有没有其他有效的方法可以使用new运算符?
请帮忙
答案 0 :(得分:2)
您不需要一次执行此操作。我会立刻做所有的字节。
int length = input.available();
byte[] array = new byte[length];
String logText = new String(array, 0); // assume ISO-8859-1 encoding