2013-04-06 4 views
1

Matlab에서 다음 코드를 실행하면 Matlab의 실제 메모리 사용량이 시스템 메모리의 90 %에 도달 할 때까지 증가하고 프로그램이 충돌합니다. 이 코드는 더 많은 반복이 필요한 더 큰 최적화 체계의 일부이지만 여기에서는 단순화되었습니다. 자바는 작업 공간에서 객체로 Matlab에서 실제 메모리 증가를 줄이는 방법은 무엇입니까?

import org.parent.modeling.* 

for i = 1:100 
    rTool = Tool('C:/etc'); 
    model = rTool.getModel(); 
    model.initSystem(); 
    rTool.setModel(model); 
    rTool.run(); 
end 

rTool 및 모델

이 저장됩니다. 아래에서 위로 단계를 선택적으로 제거하면 rTool.run(); 단계는 매 반복마다 증분 메모리를 증가시킵니다. 나는 내가 memory 명령을 실행하여 조각을 검사 한 성공하지

clear classes, clear java, clear rTool model, clear all 

와 메모리 청산 다양한 기술을 사용하여 시도했지만,이 미미하다. 다음은 API 문서 (https://simtk.org/api_docs/opensim/api_docs/classOpenSim_1_1RRATool.html)

for i = 1:1:4 

    import org.opensim.modeling.* 

    rraTool = RRATool('C:\...filename.xml'); 
    model = rraTool.getModel(); 
    model.initSystem(); 

    rraTool.setModel(model); 
    rraTool.run(); 

end 

물리적 메모리 증가를 줄이기위한 어떤 제안에 해당하는 실제 코드는?

matlab에 2013

+0

'도구'에 대한 API 문서는 어디에 있습니까? 또는'org.parent.modeling. *'? –

+0

https://simtk.org/api_docs/opensim/api_docs/classOpenSim_1_1RRATool.html 원래 코드는 일반적인 코드입니다. 위의 실제 코드를 추가했습니다. – hblue

+0

링크 된 API 문서는 Java가 아니라 C++입니다. 왜 이것을 자바로 태그 쳤습니까? –

답변

1

그것은 말할 것도없고 왜 메모리가 누수되고, 실제로 여기에서 무엇을하고 있는지 파악하기 어렵다. 내가 추측 할 수 있었던 것부터 Matlab에서 Java를 호출 할 수 있으며 Matlab에서 직접 C++을 호출 할 수 있습니다. C++ 라이브러리를 직접 호출하거나 Java (JNI/JNA) 래퍼를 통해 호출하는 경우를 알 수 없습니다. 그리고 당신이 후자를하고 있다면 ... 왜. 때문에 자바 래퍼의 버그 나에> C++의 경우, 누수가 될 수있다 -> 자바 - Matlab에서 들어 http://www.mathworks.com.au/help/matlab/matlab_external/memory-management-issues.html

: - Matlab에서 들어

> C++의 경우,이 페이지는 메모리 누수를 피하는 몇 가지 팁이있다 관련 C++ 측 래퍼 코드 또는 래퍼를 사용하는 방식에 문제가 있습니다. 예를 들어, 호출해야 할 일부 dispose 메서드가있을 수 있습니다. 세부 정보는 Java API 문서 ...에서 찾을 수 없거나 Java 소스 코드 자체에 있어야합니다.


나는 자바 내가 사용할 수있는 명령을 삭제 일반적인 메모리가 있다고 기대했다.

그런 마법 명령이 없습니다. 메모리가 누출되는 곳을 찾아서 수정해야합니다.

+0

귀하의 도움에 감사드립니다. Matlab을 사용하여 Java 래퍼를 통해 C++을 호출합니다. 더 깊이 파고 rraTool.run()에서 메모리 누수가 발생하는 이유를 찾으려고합니다. 명령. 내가 제공 한 제안을 살펴 보겠습니다. 다시 한 번 감사드립니다! – hblue

+0

여기에서 코드 예제를 얻는 것이 좋습니다. 나는 http://askubuntu.com/q/799834/25388 비슷한 문제를 겪고있다. 그러나 나의 매트릭스는 너무 커서이 제안이 충분할 것이라고 확신하지 못한다. –

관련 문제