첫 번째 최적화 법칙 :하지 마십시오. 두 번째 법칙 : 실제로 최적화하고 어디에서해야하는지에 대한 사실을 측정하고 알지 않는 한 그렇게하지 마십시오.
오브젝트를 작성하는 데 실제로 비용이 많이 들며 실제로 재사용 할 수있는 경우 (공용 조작만으로 상태를 재사용 할 수있는 것으로 재설정 할 수있는 경우) 효과적 일 수 있습니다.
당신이 언급 한 두 가지 이득은 사실이 아닙니다. java의 메모리 할당은 입니다.입니다 (비용은 10 cpu 명령에 가깝지만 아무 것도 없음). 따라서 객체 생성을 줄이면 생성자에서 소비하는 시간 만 절약됩니다. 이것은 변경없이 재사용 할 수있는 매우 무거운 객체 (데이터베이스 연결, 스레드)로 얻을 수 있습니다. 동일한 연결 (동일한 스레드)을 다시 사용합니다.
GC 시간이 줄어들지 않습니다. 사실 그것은 더 나쁠 수 있습니다. 움직이는 세대 GC (Java는 1.5까지)에서 GC 실행 비용은 릴리스 된 메모리가 아닌 살아있는 객체의 수에 의해 결정됩니다.Alive 객체는 메모리의 다른 공간으로 이동합니다 (메모리 할당 속도가 빨라짐 : 여유 메모리가 각 GC 블록 내에서 연속적입니다). 으로 표시되고 이전 세대 메모리 공간으로 옮겨지기까지 몇 번.
프로그래밍 언어 및 지원은 GC와 같이 일반적인 사용법을 염두에두고 설계되었습니다. 많은 경우에 일반적인 사용법을 벗어나면 코드를 읽는 것이 더 효율적이지 않을 수 있습니다.
의견이 부정적으로 보입니다. 비슷한 것을 고려하고 있었다. 나는 수천 개의 작은 잠복 상자 객체를 만드는 J2ME 애플리케이션을 가지고있다. 내가 그 풀을 만들 수 있다면 나중에 GC에 더 쉬운 일을하게 할 것입니다. 이것이 휴대 전화의 제약 된 세계에서 여전히 나쁜 생각인지 궁금합니다. – izb
값 비싼 객체 만 풀링합니다 (데이터베이스 연결 등). "비싼"의 정의는 요구 사항에 따라 크게 달라집니다. –