小编Cri*_*tiL的帖子

使用append时,StringBuilder使用更多内存

{
    StringBuilder fileBuff = new StringBuilder();
    long before = getUsedMem();
    try {
    //Open InputStreamReader here
        while ((currLine = lnr.readLine()) != null) {
            fileBuff.append("\r\n" + currLine);
        }
     //Close streams
    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println("usedTotal: " + (getUsedMem() - before));
}

private long getUsedMem() {
    return Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
}
Run Code Online (Sandbox Code Playgroud)

在运行代码几次的时候,我得到了usedTotal ~ 14279888,但如果我用我替换fileBuff.append("\r\n").append(currLine)得到几乎双倍的内存~ 33264440.
有人可以解释原因,因为我知道String串联也使用StringBuilder

我:fileBuff.append("\ r \n"+ currLine);

      62: aload         6
  64: invokevirtual #16                 // Method java/io/LineNumberReader.readLine:()Ljava/lang/String;
  67: dup …
Run Code Online (Sandbox Code Playgroud)

java string stringbuilder string-concatenation

5
推荐指数
1
解决办法
6213
查看次数

SimpleDateFormat的替代方法,用于日期解析

我真的需要SimpleDateFormat的替代品,我正在将许多Strig日期(> 100k)从JST转换为GMT.我遇到的问题是我的代码生成了许多char [],正如我在分析时注意到的那样.对于150k日期,我使用了150MB的内存,这不是一个真正的选择.谢谢.

    SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
    sdf.setTimeZone(tz);
    try {
        Date theResult = sdf.parse(dateToConvert);
        SimpleDateFormat rdf = new SimpleDateFormat(resultDateFormat);
        rdf.setTimeZone(resultTz);
        return rdf.format(theResult);
    } catch (ParseException e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

我不能使用Joda时间,所以这对我来说不是一个选择.:(

java timezone date simpledateformat

3
推荐指数
1
解决办法
1万
查看次数

TCP数据包在网络级别合并

是否有人知道对方如何以及为什么会接收合并的TCP数据包而不是单独打包数据包?我已经在套接字级别将TCP Nodelay设置为true,但是tcpdump仍然看到一些数据包已合并。在成功发送了4个大小为310字节的数据包后,我得到了3 x 1400字节,而不是15 x 310字节。这导致一些重要的延迟。谢谢。

http://www.2shared.com/photo/_bN9UEqR/tcpdump2.html

s = new Socket(host, port);
s.setTcpNoDelay(true);
s.getOutputStream().write(byteMsg); 
s.getOutputStream().flush()
Run Code Online (Sandbox Code Playgroud)

java networking tcp tcpdump

3
推荐指数
1
解决办法
2062
查看次数