자바 jdk 1.7 상수 탱크 는 어디로 옮 겼 습 니까?
public static void main(String[] args) throws Throwable {
List<String> list = new ArrayList<String>();
int i=0;
while(true){
list.add(String.valueOf(i++).intern());
}
}
그러면 문제 가 생 겼 습 니 다.우 리 는 예전 에 상수 탱크 가 자바 JVM 에 있 는 방법 구역 에 있다 는 것 을 알 고 있 었 습 니 다.많은 사람들 이 이 를'영구 세대'라 고 부 릅 니 다.-XX:PermSize=20M-XX:MaxPermSize=20M 을 통 해 크기 를 설정 할 수 있 습 니 다.이 지역 의 메모리 가 넘 치면 Exception in thread'main'자바.lang.OutOf Memory Error:PermGen space 의 메모리 가 이상 하 게 넘 칩 니 다.그러나 여 기 는 그렇지 않 습 니 다.오히려 GC 의 시간 이 너무 길 어 질 것 입 니 다.그러면 저 는 이 상수 탱크 가 자바 더미 로 이동 한 것 이 라 고 추측 합 니 다.다음 테스트 를 해 보 겠 습 니 다.우선,소스 코드 가 변 하지 않 고 실행 시 JVM 의 인 자 를 증가 합 니 다.-Xmx20m-Xms20m-XX:-UseGCoverheadLimit,여기 있 는-XX:-UseGCoverheadLimit 는 GC 를 닫 는 데 시간 이 너무 오래 걸 리 면 이상 을 보고 합 니 다.그리고 더미 의 크기 를 제한 하고 프로그램 을 실행 합 니 다.과연 잠시 후에 이상 을 보고 합 니 다.Exception in thread"main"자바.lang.OutOfmory Error:자바 힙 space 는 위의 이상 을 통 해 우리 가 테스트 한 상수 가 모두 더미 에 들 어 갔 음 을 알 수 있 습 니 다.그래서 메모리 쌓 기 를 제한 한 후에 상수 가 계속 증가 하고 메모리 쌓 기 가 넘 칠 것 입 니 다.우리 가 추측 한 것 과 마찬가지 로 나 도 홈 페이지 를 살 펴 보 니 홈 페이지 에 설명 이 있 는 것 을 발견 했다.http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html: Area: HotSpot Synopsis: In JDK 7, interned strings are no longer allocated in the permanent generation of the Java heap, but are instead allocated in the main part of the Java heap (known as the young and old generations), along with the other objects created by the application. This change will result in more data residing in the main Java heap, and less data in the permanent generation, and thus may require heap sizes to be adjusted. Most applications will see only relatively small differences in heap usage due to this change, but larger applications that load many classes or make heavy use of the String.intern() method will see more significant differences. RFE: 6962931
자신의 실천 과 홈 페이지 설명 을 통 해 자바 jdk 1.7 의 상수 탱크 가 확실히 더미 로 옮 겨 졌 음 을 알 수 있 습 니 다.또한 jdk 1.8 에 서 는 전체 방법 구역 을 제거 할 수 있 습 니 다.대신 원 공간(Metaspace)이라는 구역 입 니 다.더 알 고 싶 으 면 참고 하 세 요.http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html http://blog.csdn.net/zhyhang/article/details/17246223/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
개인 학습 소감 노트 의 자바 중"="자 료 를 찾 아 보 니 두 개 모두 인용 대상 을 비교 한 것 으로 결과 가 다 르 고 주요 원인 은 하나의 수치 가 상수 탱크 의 범위 내 에 있 지 않 기 때문이다. (3)상기 6 가지 상수 탱크 가 실 현 된...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.