일련의 비트 맵을 만드는 응용 프로그램이 있습니다. 나는 메모리 부족을 피하기 위해이 비트 맵을 SoftReferences에두고있다. 내 SoftReferences를 수집하기 전에 힙 크기를 최대 16MB까지 늘리고 싶습니다. 그러나 SoftReferences는 힙을 최대로 늘리기 전에 매우 열심히 수집됩니다. 참고 자료를 덜 열심히 수집하도록 강요하는 방법이 있습니까? 수동으로 힙을 최대 크기로 늘리려면? 아마 16mb 할당 된 응용 프로그램을 시작하는 방법?Android 힙 크기 및 SoftReferences
3
A
답변
3
현재 SoftReference 컬렉션 동작을 수정할 방법이 없습니다.
"수동으로 힙을 최대로 늘리는 것"이 무슨 뜻인지 잘 모르겠습니다.
비트 맵 클래스의 인스턴스 인 경우 (일부 사용자 지정 비트 맵 구현과 반대) 픽셀 데이터는 실제로 네이티브 힙에 저장되지만 성가신 "외부 할당"계정 트릭을 사용하므로 상황이 더욱 복잡해집니다. (특히 저장소는 GC가 아닌 파이널 라이저에 의해 해제되고 GC가 완료된 후에는 파이널 라이저가 별도의 스레드에서 실행되어야합니다. 메모리가 부족할 때까지 비트 맵을 할당 할 수 있으며 GC는 OOM 오류가 발생하기 전에 메모리가 필요합니다.)
1
Andriod의 알려진 문제입니다. VM이 소프트 레퍼런스를 수집 할 때, 그것은 'some'를 수집해야하고 free heap이 충분히있을 때 아무것도 수집해서는 안되지만 모두를 수집하거나 전혀 수집하지 않습니다.
확인 기준 : http://code-gotcha.blogspot.com/2011/09/softreference.html
관련 문제
- 1. Android 플랫폼의 맞춤 힙 크기?
- 2. -Xms : 초기 힙 크기 또는 최소 힙 크기?
- 3. VS2005 : 힙 크기 제한
- 4. Regarind 힙 크기 오류
- 5. 톰캣의 힙 크기 설정
- 6. JMP의 Java 힙 크기
- 7. OutOfMemoryException, 덤프 파일 크기 및 GC 힙 크기
- 8. 이미지 크기 및 Android
- 9. 약 힙 (최대 힙 및 최소 힙)
- 10. Tomcat 6 힙 크기 - 정확합니까?
- 11. LuaJit 스택/힙 크기 증가
- 12. 자바 크기 조정 힙 질문
- 13. 런타임시 JVM 힙 크기 설정
- 14. Java/Tomcat 힙 크기 질문
- 15. 사운드 클립의 힙 크기 오버 플로우 문제
- 16. JVM 최소 힙 크기 권장 사유?
- 17. Android ==> Eclipse 힙 도구 질문이 있으십니까?
- 18. JBoss에 최적의 최소 및 최대 힙 크기 지정
- 19. Android 성장 힙 조각 경우
- 20. 힙 크기 매개 변수 xmx가 재정의되었습니다.
- 21. Apache Karaf에서 자바 힙 크기 설정
- 22. Tomcat6 서버의 Java 힙 크기 변경
- 23. Hadoop java mapper -copyFromLocal 힙 크기 오류
- 24. VS2003의 비정상적인 힙 크기 제한 C++
- 25. 구성 파일에서 힙 크기 구성을 지정하는 방법
- 26. 프로그래밍 방식으로 최대 Java 힙 크기 설정
- 27. malloc() 및 힙 메모리
- 28. 기본 힙 및 ddms
- 29. 스레딩 힙 및 스택
- 30. _CrtMem * 및 디버그 힙
"최대로 힙을 성장"내가 시작할 때, 내 앱 16메가바이트의 할당을 강제 할 수있는 방법을 기대했다. 다음과 동등한 것 : "-Xmx16m", from java. – ab11
이것은 현재 완료된 힙의 최대 크기를 제한합니다 (Android 앱 프레임 워크가이를 VM에 정확하게 전달합니다). 초기 크기를 설정하는 "-Xms16m"을 생각하고 있었습니까? 이 옵션은 외부 할당 작업으로 인해 원하는 작업을 수행하지 않습니다. 숨겨진 메소드 (처음에 실수로 노출 된, 나중에 숨겨 짐)가 있습니다. dalvik.system.VMRuntime.setMinimumHeapSize는 대략 원했던 것이었지만, 힌트 일 뿐이며 앞으로는 사라질 가능성이 큽니다. – fadden