当前位置: 代码迷 >> Java相关 >> 关于java的内存储器管理
  详细解决方案

关于java的内存储器管理

热度:2559   发布时间:2013-02-25 21:45:10.0
关于java的内存管理
我以前心里有一个这样的想法,那就是假如一个方法是要被循环(可能是无限循环)调用的,那么这种做法将是愚蠢的:那就是在该方法中写new ,因为这样的话因为是很多次循环,如果这样不停的new 的话,那内存一定会被吃光的。可是我刚才式了一下这个程序:
Java code
import java.util.regex.Matcher;import java.util.regex.Pattern;public class test {    public static void main(String args[]) {        int count = 100000 * 100000000;        for (int i = 0; i < count; i++) {            new test();            System.out.println(i);        }    }    private static String translate(String original) {        StringBuffer newStr = new StringBuffer("");        Pattern p = Pattern.compile("[A-Za-z0-9\\s]");        char[] chars = new char[1];        Matcher m;        for (int i = 0; i < original.length(); i++) {            chars[0] = original.charAt(i);            m = p.matcher(new String(chars));            if (!m.matches())                newStr.append(" ").append(original.charAt(i)).append(" ");            else                newStr.append(original.charAt(i));        }        return newStr.toString();    }}

为什么内存没有爆掉?

------解决方案--------------------------------------------------------
new test();执行完之后新创建的对象就是垃圾了,可以gc掉。再者,循环次数很多,到达一定程度之后jit可以把这句没有意义的话优化掉,根本不分配对象。
  相关解决方案