>Java >java지도 시간 >Java의 정수 캐싱이 `==` 비교에 영향을 미치는 이유는 무엇입니까?

Java의 정수 캐싱이 `==` 비교에 영향을 미치는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-18 14:30:12930검색

Why Does Java's Integer Caching Affect `==` Comparisons?

Java에서 작은 정수가 캐시되는 이유는 무엇입니까?

문제:

다음 Java 코드를 고려하십시오.

Integer a = 1000, b = 1000;  
System.out.println(a == b); // false  
Integer c = 100, d = 100;  
System.out.println(c == d); // true

왜 a와 b의 비교는 false이고 c와 b의 비교는 false입니다. d는 두 쌍의 숫자 값이 모두 동일함에도 불구하고 true를 반환합니까?

답변:

메모리와 성능을 최적화하기 위해 JVM(Java Virtual Machine)은 내부에 Integer 인스턴스를 캐시합니다.

JVM은 작은 정수 값(일반적으로 -128에서 127 사이)이 자주 사용되는 것을 인식합니다. 프로그램. 이러한 각 값에 대해 새 Integer 개체를 할당하면 과도한 메모리가 소비됩니다. 따라서 JVM은 이 범위 내에서 사전 할당된 정수 인스턴스의 캐시를 유지 관리합니다. 오토박싱이 발생하거나 리터럴 정수 값이 정수 변수(예: 정수 c = 100;)에 할당되면 JVM은 캐시에서 해당 인스턴스를 검색합니다.

이러한 최적화는 메모리 오버헤드를 크게 줄이고 캐시 효율성을 향상시킵니다. . 동일한 Integer 객체에 대한 여러 참조를 저장함으로써 JVM은 중복 객체 생성을 방지하고 메모리 사용을 최적화할 수 있습니다.

위 내용은 Java의 정수 캐싱이 `==` 비교에 영향을 미치는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.