使用new Operator(性能)将byte []转换为String

时间:2014-05-21 14:38:14

标签: java string memory bytearray

基于以下问题,

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运算符?

请帮忙

1 个答案:

答案 0 :(得分:2)

您不需要一次执行此操作。我会立刻做所有的字节。

int length = input.available();
byte[] array = new byte[length];
String logText = new String(array, 0); // assume ISO-8859-1 encoding