观察如下代码: String s = ""; for (int i = 0; i < 1000; i++) { s = s + "," + i; } 虽然可以直接拼接字符串,但是,在循环中,每次循环都会创建新的字符串对象,然后扔掉旧的字符串.这样,绝大部分字符串都是临时对象,不但浪费内存,还会影响GC效率 为了能高效拼接字符串,Java标准库提供了StringBuilder,它是一个可变对象,可以预分配缓冲区,这样,往StringBuilder中新增字符时,不
/// designed by Alex /// 解决内存溢出问题,不可使用迭代器和foreach /// 循环遍历List, 别生成xml,一边释放 /// 反向遍历,相当于出栈,避免索引顺序乱的问题 /// 反转List. ) { log.Debug("反转list"); zrate.RateList.Reverse(); log.Debug("循环遍历Zrate List 生成xml"); int policySize = zrate.RateList.Cou
一.堆溢出 在执行代码时通过设置堆的最小值-Mms以及堆的最大值-Mmx来控制堆的大小,-XX参数dump出堆内存快照以便对内存溢出进行分析.通过创建大量对象来使堆溢出,当堆内存溢出时会提示OutOfMemeoryError:Java heap space信息. import java.util.List; import java.util.ArrayList; public class HeapOOM { static class OOMObject{} public static void
今天又遇到了上次出现的bug,然后百度了一下,想起来这是内存溢出的毛病,故记录下来! 出现的问题就是这样: heap corruption detected: after normal block(#xxx) at 0x xxxxxxxx crt detected that the application wrote to menory after end of heap buffer 原因: 这是典型的内存溢出错误,常在内存的delete处发生,而且一般在debug版本中可能出现,releas