2012-09-17 2 views
4

왜 Matlab이 스왑을 사용하지 않고 대신 "메모리 부족"이라는 오류를 던지나요?Matlab이 스왑을 사용하지 않고 "메모리 부족"오류가 발생하는 이유는 무엇입니까?

Matlab은 "메모리 부족"을 표시하는 대신 속도를 낮추지 않아야합니까?

이 자바와 관련이 있습니까?

추가 :

내가 아는 "메모리 부족"이 연속 메모리가 부족 의미합니다. 스왑에 연속 메모리가 없습니까? 나는 혼란 스럽다 ...

+0

예 자바와 관련 있습니다 - 참조 : http://stackoverflow.com/questions/4583995/is-there-any-way-to-force-a-jvm-to-use-swap-no-matter-how- 빅 메모리 요구 - 여전히 스왑을 구현하지 않은 수치심. – bdecaf

+0

@bdecaf 아니, 그렇지 않습니다. Java는 내부 MATLAB 데이터 구조가 아닌 Java 객체 생성 만 관리합니다. 그것들은 MATLAB 독점 코드에 의해 처리되며 JVM과 관련이 없습니다 ([이 기사의 두 번째 단락] (http://blogs.mathworks.com/community/2009/08/17/calling-java-from-matlab-memory -issues /)). – angainor

답변

6

그것은 MATLAB에 관한 것이 아니다. 하드웨어에 존재하는 메모리보다 더 많은 메모리를 할당하려고하면 어떤 일이 발생합니까? OS 고유의 동작입니다.

Linux에서는 기본적으로 OS가 원하는대로 거의 모든 것을 자동으로 할당합니다. 즉 스왑 공간도 할당 가능한 메모리로 계산됩니다. OOM 오류는 없지만 스왑 할당 데이터가있는 계산 속도가 느립니다. 이 '기능'은 오버 커밋이라고합니다. Linux에서 오버 커밋 설정을 수정하여이 동작을 변경할 수 있습니다 (예 : here 요약).

오버 커밋은 전체 OS가 실제로 느리게 작동하기 때문에 MATLAB의 더 큰 문제를 해결하기 위해 이것을 사용하는 것이 가장 좋은 방법은 아닙니다. 분명히 계산에서 하드 디스크를 의식적으로 사용하는 최적화 된 '코어 외부'구현과 비교할 수 없습니다.

이것은 Linux에서 사용하는 방법입니다. Windows에서 메모리 할당 동작을 변경하는 방법을 모르지만 실제로 그렇게하려고하는지는 의심 스럽습니다. RAM이 더 필요합니다.

당신은 혼란스러워합니다. 스왑은 인접한 메모리와 아무 관련이 없습니다. OS에 의해 할당 된 메모리는 '가상 메모리'이며, 근본적인 물리적 메모리를 인접한 페이지에 매핑 할 수 있는지 여부에 관계없이 연속적입니다.

투명한 정보 편집 '밖으로의 핵심'작업 추가 메모리로 디스크 공간을 사용하여 큰 matriices에 당신은 VVAR fileexchange project에서보기를 할 수 있습니다. 이 클래스는 평범한 MATLAB 클래스 인 척하지만 기본 HDD 파일에서 작동합니다. 보통 array size limitations의 MATLAB이 여전히 적용됩니다.

+0

vvar 멋지다, 고마워! – HaveF

관련 문제