Nice programing

Xamarin에서 OutOfMemoryException 가져 오기

nicepro 2020. 11. 3. 19:14
반응형

Xamarin에서 OutOfMemoryException 가져 오기


java.lang.OutOfMemoryError. $ (JavaMaximumHeapSize) 값을 늘리십시오. 'java.exe'를 실행하는 동안 Java 메모리가 부족합니다.

내 visualstudio Xamarin 프로젝트에서 메모리 부족 예외가 발생합니다.이 문제를 어떻게 해결할 수 있는지 도와주세요.


빌드 힙 크기를 늘릴 것입니다.

Android 프로젝트> 속성 > Android 옵션 > 고급 > Java 최대 힙 크기를 마우스 오른쪽 버튼으로 클릭합니다 .

여기에 이미지 설명 입력


선택한 답변이 올바른 방향으로 안내했지만 Visual Studio 2017의 경우 화면은 다음과 같습니다.

VS 2017 업데이트 화면

VS 2017 업데이트 화면


애플리케이션 (빌드 프로세스가 아님)의 힙 크기를 늘리려면 AndroidManifest.xml에서 설정할 수 있습니다.

<application android:largeHeap="true"></application>

Visual Studio 2015의 경우 프로젝트-> 속성-> Android 옵션-> 고급 및 힙 크기를 마우스 오른쪽 단추로 클릭하십시오.


Xamarin studio 버전 6.3 및 Visual Studio 7.0.1부터 힙 크기를 늘리는 옵션은 여기에서 찾을 수 있습니다.

Android 프로젝트를 마우스 오른쪽 버튼으로 클릭 한 다음 옵션 을 선택하고 Build / Android Build 를 선택한 다음 Advanced 탭을 선택하고 Java 힙 크기 에서 1G (또는 기타)를 설정 합니다.

여기에 이미지 설명 입력


1G 힙 크기가 부족하면 리소스 최적화를 시작하십시오.

먼저 동일한 이미지를 메모리에 여러 번 유지하면서 이미지 인스턴스를 복제하지 않는지 확인하십시오. 이를 위해 ffimageloading 라이브러리 ( https://github.com/luberda-molinet/FFImageLoading ) 를 사용하여 빠르고 쉽게 nuget에서 가져옵니다.

그런 다음 사용중인 이미지를 최적화하십시오. 아이콘 이외의 큰 이미지의 경우 투명도가있는 png를 피하고 모든 것을 jpeg로 변환 해보십시오.

그런 다음 원격에 큰 이미지를 업로드했을 때 이미지 대신 미리보기 이미지를 사용해보세요. 서버에서 mini, small, medium, normal, large, xlarge 등 다양한 크기의 미리보기 이미지를 만들고 실제로 필요한 크기의 이미지 만로드합니다. 이는 많은 메모리와 속도를 절약합니다.

또 하나는 메모리 누수입니다. 메시지, 이벤트 처리기 및 기타 항목에서 구독을 취소하지 않은 경우 셀 또는 기타 요소가 여전히 메모리에 상주 할 수 있습니다. 일어날 수 없다고 확신 할 때 여전히 메모리에 이미지로 가득 찬 목록의 여러 복사본을 가질 수 있다고 상상해보십시오. 여기에 더 많은 정보 :

https://forums.xamarin.com/discussion/123876/should-we-unsubscribe-all-events-for-memory-management

https://forums.xamarin.com/discussion/87206/messaging-center-unsubscribe-from-all-messages-when-broadcast-stops


내 경험상 메모리 문제는 Xamarin.Forms 앱의 Android 버전에서만 발생합니다. 그리고 항상 큰 이미지를 처리해야합니다. FFImageLoading ( https://github.com/luberda-molinet/FFImageLoading ) 을 사용하여이 문제를 처리했습니다.

당신의

<Image Source="waterfront.jpg" />

<ffimageloading:CachedImage Source="waterfront.jpg"
DownsampleToViewSize = true,
BitmapOptimizations = true/>

성능이 크게 향상되고 메모리 문제도 해결됩니다.


Java 최대 힙 크기를 늘리면 효과가 있습니다.

여기에 이미지 설명 입력


AndroidManifiest.xml의 응용 프로그램 태그에 아래 추가를 수정했습니다.

<application  android:largeHeap="true" android:label="sample"></application>

참고 URL : https://stackoverflow.com/questions/36835790/getting-outofmemoryexception-in-xamarin

반응형