문자열 리터럴의 가비지 컬렉션
Q1: 문자열이 컴파일 타임에 리터럴로 정의된 경우(예: 문자열 str = "java"), 가비지 수집됩니까?
일반적으로 그렇지 않습니다. 코드 객체에는 리터럴 String 객체에 대한 참조가 포함되어 있어 접근 가능하게 유지됩니다. 가비지 수집은 코드 객체에 접근할 수 없는 경우에만 발생합니다.
Q2: 인턴 메서드를 사용하는 경우(예: String str = new String("java").intern()) 가비지가 됩니까? collection?
반환된 객체는 클래스 로딩 시간에 인턴되는 "java" 문자열 리터럴과 동일합니다. 따라서 가비지 수집되지 않습니다. 그러나 문자열 리터럴과 동일하지 않은 인턴 문자열은 연결할 수 없게 되면 가비지 수집될 수 있습니다.
Q3: 문자열 클래스가 언로드될 때만 리터럴이 가비지 수집된다는 것이 말이 됩니까?
아니요. String 클래스는 Java Virtual Machine에 필수적이며 언로드될 가능성이 없습니다. 그렇지 않은 출처는 정확하지 않습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3