나는 많은 수의 문자열을 저장했습니다. 값은 자주 변경되지 않습니다.string.intern은 메모리를 덜 사용합니다.
string.intern()
은 참조만을 반환하기로되어 있기 때문에, 나는 ArrayList
에 저장된 1 억 개의 똑같은 문자열 목록을 모두 사용했습니다.
Java 메모리가 줄어들 것으로 예상되었지만 일반적인 문자열과 내부 문자열을 비교하면 .1 % 미만의 차이가 나타납니다.
나는 뭔가를 놓치고 또는이 예상 된 행동입니까?
리스트 생성 코드
long max = 100000000;
for(int i =0 ; i < max;i++){
list.add("sometextelidedforbrevity".intern());
}
메모리 사용없이 1 242 3백60킬로바이트 1 242 1백84킬로바이트으로한다.
어떻게 이러한 문자열을 만드십니까? 코드를 보여주세요. 그들은 이미 구금되어있을 수도 있습니다. – cdhowie
문자열 리터럴 또는'new String()'을 사용하고 있습니까? 문자열 리터럴은 자동으로 금지되므로 ... –
사용중인 메모리 양은 어느 정도입니까? –