이전 개발자로부터 일부 응용 프로그램을 인계받습니다. 이클립스를 통해 응용 프로그램을 실행할 때 메모리 사용량과 힙 크기가 많이 증가하는 것을 볼 수 있습니다. 추가 조사를 통해, 나는 그들이 반복적으로 객체를 반복적으로 생성한다는 것을 알았습니다.Java 메모리 관리에 대한 유용한 정보가 있습니까?
나는 약간의 청소를하고 시작했다. 그러나 내가 끝까지 갈수록 더 많은 질문을 할 수 있습니다. "이것은 실제로 무엇을 할 것인가?"
예를 들어 위에서 언급 한 루프 외부에서 변수를 선언하고 루프에서 해당 값을 설정하는 대신 ... 루프에서 개체를 만들었습니다. 내 말은있다 : 잘못된
for(int i=0; i < arrayOfStuff.size(); i++) {
String something = (String) arrayOfStuff.get(i);
...
}
String something = null;
for(int i=0; i < arrayOfStuff.size(); i++) {
something = (String) arrayOfStuff.get(i);
}
대 암의 나는 바닥 루프가 더 말을? 아마도 나는 틀렸다.
위의 두 번째 루프 이후에도 "무언가"를 다시 null로 설정해야합니까? 기억이 나지 않을까요?
두 경우 모두 내가 수행 할 수있는 좋은 메모리 관리 모범 사례는 내 응용 프로그램에서 메모리 사용량을 낮추는 데 도움이 될 것입니다.
업데이트 : 지금까지 모든 사람의 의견을 보내 주셔서 감사합니다
. 그러나, 위의 루프에 대해 실제로 묻지는 않았습니다. (귀하의 충고에 따라 첫 번째 루프로 돌아 갔지만). 나는 눈을 뗄 수없는 모범 사례를 얻으려고 노력하고있다. "당신이 콜렉션을 사용하여 끝났을 때, 그것을 지워라."라는 라인에 뭔가가 있습니다. 난 그냥 정말 많은 메모리가 이러한 응용 프로그램에 의해 촬영되고 있는지 확인해야합니다.
수정 : 세 명이 지금까지 말했듯이 프로필을 작성하십시오. –
몇 가지 구체적인 사례를 찾고 있으므로 프로필을 작성할 필요가 없습니다. 코드 작성, 작동, 프로파일 링, 수정을하기보다는 처음부터 적절하게 개발하고 싶습니다. – Ascalonian
"구체적인 방법"은 조기 최적화를 수행하지 않고 잘 구조화 된 코드를 작성한 다음이를 최적화하여 필요한 것을 찾아내는 것입니다. –