>  기사  >  Java  >  Java에서 SoftReferences와 WeakReferences를 언제 사용해야 합니까?

Java에서 SoftReferences와 WeakReferences를 언제 사용해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-12 01:51:02327검색

When Should I Use SoftReferences vs. WeakReferences in Java?

Java에서 SoftReference와 WeakReference의 차이점 이해

Java는 SoftReference와 WeakReference라는 두 가지 유형의 참조를 제공합니다.

SoftReferences

Ethan Nicholas가 약한 참조 이해에서 설명했듯이 SoftReference는 강력하게 참조되지는 않지만 여전히 가치 있는 객체를 나타냅니다. . 가비지 수집기는 메모리가 충분하다면 소프트 참조 개체를 유지합니다. 따라서 SoftReferences는 메모리가 부족해질 때까지 자주 사용되지 않는 객체를 보관할 수 있는 캐시에 이상적입니다.

JVM(Java Virtual Machine)에서 Peter Kessler는 클라이언트와 서버 JRE 처리의 차이점을 지적합니다. 클라이언트 JRE는 작은 메모리 공간에 우선순위를 두고 SoftReferences를 적극적으로 지워 힙 확장을 방지합니다. 반대로, 서버 JRE는 성능을 우선시하고 힙 확장을 희생하더라도 SoftReferences를 유지하려고 시도합니다.

WeakReferences

SoftReferences와 달리 WeakReferences는 힙 확장이 필요한 객체를 지정합니다. 가비지 수집 즉시 폐기됩니다. 임시 리소스나 쉽게 다시 생성할 수 있는 개체와 같이 개체의 지속적인 존재가 중요하지 않은 시나리오에서 사용됩니다.

WeakReferences는 두 개체가 서로에 대한 강력한 참조를 보유하는 순환 참조를 해제하는 데 편리합니다. 가비지 수집을 방지합니다. 한 개체에 대해 WeakReference를 도입하면 순환성이 깨져 다른 강력한 참조가 없을 때 두 개체가 모두 가비지 수집될 수 있습니다.

주요 차이점

  • SoftReferences는 여전히 가치 있는 개체를 나타내고 WeakReferences는 즉시 폐기해야 하는 개체를 나타냅니다.
  • SoftReferences는 일반적으로 WeakReferences보다 오래 유지되며, 특히 -server JVM에 메모리가 충분한 경우 더욱 그렇습니다.
  • WeakReferences는 순환 참조를 깨는 데 유용하고 SoftReferences는 캐시 구현에 적합합니다.

위 내용은 Java에서 SoftReferences와 WeakReferences를 언제 사용해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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