2011-10-15 6 views
0

포인터 아래에서 무료로 캔버스, 페인트 및 매트릭스 메모리를 해제하는 방법이 필요합니까?android에서 메모리를 해제하는 방법

Canvas pcanvas = new Canvas(); 

Paint mPaint = new Paint(); 

Matrix matrix = new Matrix(); 

미리 감사드립니다.

답변

5

Java에 포인터가 없으므로 명시 적으로 메모리를 해제 할 수 없습니다.

그러나 leak memory in Java and Android 일 수 있습니다. 개체 중 하나가 관리되지 않는 메모리를 참조하는 경우 해당 메모리를 해제 할 수있는시기를 알려야합니다.

그래픽 관련 작업을하고있는 것으로 보입니다. 비트 맵을 어딘가에서 사용하고 있으며 많은 메모리를 사용하고 있으며 메모리를 공개해야한다고 생각합니다. 비트 맵 사용이 끝나면 Bitmap.recycle()으로 전화하십시오.

1

만든 개체를 더 참조하지 않은 후에는 null 값을 할당하십시오. 분명히 메모리를 즉시 공개하지는 않지만 이런 식으로 GC는 객체가 가비지 콜렉션을받을 자격이 있다고 말하고 있습니다. (효과적인 java).

편집 : @spatulamania가 말했듯이 비트 맵을 관리하는 경우 관련된 메모리를 확보하기 위해 리사이클 (call as a c/C++ free I think) 메서드를 호출해야합니다. null로 설정하면 비트 맵 참조가 유용하지 않습니다. 이는 비트 맵이 기본 구현되어 있고 Java 객체가 몇 바이트이기 때문입니다.

관련 문제