인턴 된 문자열이 영구 생성 영역에 저장되면 문자열 리터럴에도 동일하게 적용됩니까? 아니면 inter()에 의해 인턴 된 문자열일까요? 문자열 리터럴 및 영구 생성 메모리 영역
사실 블로그 게시물은 일반적으로 실제 문자열 객체가 힙 어딘가에 동안 해당 문자열 풀 문자열 객체에 대한 참조를 포함 말한다. 또한 영구적 인 세대가 힙에 있거나 외부에 있는지 여부에 대한 혼란이 매우 큽니다. (내가 그것을 heap.many 게시물에서 영구 세대 다른 보여주는 jcosole 사용되는 힙의 일부로서 말 많은는 다른 말)편집 : 또한 내가 달릴 :
public class stringtest2{
public static void main(String args[]){
int i=0;
List<String> list=new ArrayList<String>();
while(true){
String s="hello"+i;
String s1=i+"hello";
String s2=i+"hello"+i;
System.out.println(s);
s.intern();
s1.intern();
s2.intern();
list.add(s);
list.add(s1);
list.add(s2);
i++;
}
}
}
나는 Java.lang.OutOfMemoryError: PermGen space
를 기다리고 있었다하지만 난 가지고 :
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2760)
at java.util.Arrays.copyOf(Arrays.java:2734)
at java.util.ArrayList.ensureCapacity(ArrayList.java:167)
at java.util.ArrayList.add(ArrayList.java:351)
at stringtest2.main(stringtest2.java:20)
하지 그것이 있어야 Java.lang.OutOfMemoryError: PermGen space
Java 7의 경우 +1 –
+1을 참조하십시오. –
'Java.lang.OutOfMemoryError : Java heap space' -하지만 자바 6 업데이트 29를 사용하고 있습니다. 그래서'Java.lang.OutOfMemoryError : PermGen space'를 받아야합니다. –