728x90

꼭 회수해야 하는 자원을 다룰때는 try -finally 말고, try-with-resource 를 사용하자. 

예외는 없다. 코드는 더짧고 분명해지고, 만들어지는 예외정보도 훨씬 유용하다. try-finally로 작성하면 실용적이지 못하고 코드가 지저분해지는 경우라도, try-with-resources로는 정확하고 쉽게 자원을 회수할 수 있다.

728x90
728x90

cleaner(자바 8까지는 finalizer)는 안전망 역할이나 중요하지 않은 네이티브 자원 회수용으로만 사용하자.

물론 이런 경우라도 불확실성과 성능 저하에 주의해야 한다.

728x90
728x90

메모리 누수는 겉으로 잘 드러나지 않아 시스템에 수년간 잠복하는 사례도 있다. 이런 누수는 철저한 코드 리뷰나 힙 프로파일러 같은 디버깅 도구를 동원해야만 발견되기도 한다. 그래서 이런 종류의 문제는 예방법을 익혀두는 것이 매우 중요하다.

728x90
728x90

기존 객체를 재사용해야 한다면  새로운 객체를 만들지 마라.

728x90
728x90

클래스가 내부적으로 하나 이상의 자원에 의존, 그 자원이 클래스 동작에 영향을 준다면 싱글턴과 정적 유틸리티 클래스는 사용하지 않는 것이 좋다. 직접 만들지 않고  필요 자원을 생성자에 넘겨준다.

의존객체 주입이라 하는 이 기법은 클래스의 유연성 , 재사용성, 테스트용이성을 기막히게 개선해준다.

 

728x90
728x90

private 생성자를 통해 인스턴스화를 막게되면  상속은 불가능.

모든 생성자는 명시적이든 묵시적이든 상위 클래스의 생성자를 호출하게 되는데, 이를 private으로 선언했으니 하위 클래스가 상위 클래스의 생성자에 접근할 길이 막혀버린다.

728x90

+ Recent posts