18
다음 예를보십시오.
public void init() {
final Environment env = new Environment();
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
env.close();
}
});
}
첫째, env
은 어디에 저장됩니까? 그것은 :
- 스택에 남아 있고 어떻게 든 참조 된
- 뭔가 다른
내 추측 첫 번째 옵션입니다.
두 번째로 최종 로컬을 참조하는 많은 내부 클래스 구조를 만드는 경우 (특히 클래스의 멤버 변수로 env
을 만들고이를 참조하는 것보다는)이 작업으로 인해 발생하는 성능 문제를 해결하십시오 변수.
이렇게하면 발생하는 성능 문제가 없다고 가정 할 수 있습니까? – Joel
내 개인적인 애완 동물은이 영역에서 피할 수없는 경우 외부 인스턴스에 대한 참조 (변수에 복사되지 않은 필드에 액세스하는 데 사용됨)가 문제가 될 수 있다는 점이 다릅니다. http://stackoverflow.com/questions/ 758570/is-it-possible-to-make-make-anonymous-inner-classes-in-java-static – Thilo
을 멤버 변수로 참조하는 것과 비교합니다. 복사 된 경우에는 성능에 영향이 없다고 가정합니다. – Joel