1.String有两种常见方法
String abc = "xxxx";
String abc = new String("xxxx");
2.第一种创建方式是在JVM的常量池中寻找"xxx",如果没有则在常量池中创建"xxx"。
第二种是在堆内存中创建"xxx",如果要刷到常量池中,需要调用abc.intern.
3.问题:
字符串常量池在JVM中PermGen区域,这个区域的大小是固定的,不能在运行的时候根据需要扩大,也不能被垃圾回收器回收,因此如果程序中有太多的字符串调用intern方法的话,就可能造成OOM.
网友评论