언제나 내 질문에 다른 질문이 있으면 유감입니다 ... 다소 구체적이어서 검색하기가 어렵습니다. 나는 자바 프로그래밍과 언어 학습입니다. 실험이라는 하나의 클래스 인 을 디자인했으며 모든 실험에 대한 공통 함수와 기본 매개 변수를 정의합니다. 특정 실험마다 실험 A라고 말한 다음 실험을 하위 클래스로 지정합니다. 실험 A를 실행할 때마다 ExperimentA의 인스턴스를 만들고 매개 변수를 전달한 후 생성자는 실험에 정의 된 기본 매개 변수를 재정의합니다. 두 가지 질문이 있습니다. 나는 그들이 아마 코드를 보지 않고도 을 해결하기가 어렵다는 것을 알고 있지만, 그것을 생각해 보았습니다. 시도해 볼만한 가치가있었습니다. 또한, 내가 관련성이 있다고 생각했기 때문에 두 게시물을 동일한 게시물에 게시했습니다.Java for 루프에서 메모리 누수가 발생했습니다.
1) 위의 디자인이 합리적입니까? 처음에는 인터페이스를 사용하고 싶었지만 인터페이스의 값은 상수 여야하며 매개 변수를 무시할 수 없음을 알았습니다. 변경 매개 변수와 동일한 유형의 여러 후속 실험을 실행할 때
2) 훨씬 더 긴급하게 나에게 수수께끼, I는 메모리의 문제가 있습니다 것은 누수. E1 객체에 의해 유지되었다
몇 가지 이유를 들어for(int na:ArrayOfIntegers) {
Experiment e1 = new ExperimentA(na,otherArgs);
Experiment.runExperiment(e1);
}
, 객체는 E1이 새로운 ExperimentA 객체에 할당 된 후에도 힙 활성 상태로 유지된다. 나는 이것이 매우 일반적인 질문이라는 것을 알고 있지만, 나는 Java에 익숙하지 않으며, 문제가 무엇인지에 대한 추측이 나를 도울 수있다. 유일한 실수는 제가 개인적으로 사용하지 않고 getters를 사용하는 대신 Experiment public의 기본 변수를 만드는 것입니다.하지만이 상황에서 어떻게 문제가 발생하는지는 알 수 없습니다. 기본적으로 runExperiment() 함수가 실행되고 다른 ExperimentA 객체가 만들어진 후 e1 객체에 대한 참조가 없습니다. 어떤 아이디어?
미리 감사드립니다.
[이 질문에]보십시오 (http://stackoverflow.com/questions/13531004/java-outofmemoryerror-strange-behaviour) –
얼마나 정확하게 개체가 살아 있는지 확인합니까? 힙 검사에 무엇을 사용합니까? – Sethiel
난 메모리 분석기 도구를 사용하고 유출 용의자 보고서로 이동하십시오. – onkel