본문 바로가기
[android] "Memory leak" detect library [android] "Memory leak" detect library https://medium.com/square-corner-blog/leakcanary-detect-all-memory-leaks-875ff8360745 -Square 에서 고객 사인에 대한 OOM 방지를 위해 한 노력들 1. Bitmap.Config.ALPHA_8 로 Bitmap 생성 (color 값이 필요 없는 경우.)2. OutOfMemoryError(이하 OOM) 을 catch 해서 GC 를 강제로 수행하고 retry -Bitmap 이 문제가 아님을 깨달음.OOM 은 memory 가 full 에 가까우면 작은 bitmap 을 생성할 때도 죽을 수 있다.즉, 애초에 memory leak 이 나지 않게 해서 memory footpr.. 2019. 1. 29.
Overview of Android Memory Management ( 안드로이드의 메모리 관리 ) Overview of Android Memory Management ( 안드로이드의 메모리 관리 ) https://developer.android.com/topic/performance/memory-overview.html -Android Runtime ( ART ) 과 Dalvik 은 paging 과 memory-mapping 을 이용해서 메모리 관리를 한다.app 이 조작하는 메모리는 모두 RAM 에 상주하며 page-out 되지 않는다.이 memory 를 해지하는 방법은 GC 되도록 하는 방법밖에 없다.수정이 발생하지 않는 code 와 같은 녀석들은 RAM 에서 page out 될 수 있다. Garbage collection -Android 의 memory heap 은 세대가 있다(?).예를 들어 .. 2018. 10. 9.
[Java Concurrency] 작업 실행 [Java Concurrency] 작업 실행 - 앱이 해야 할 일을 "작업"이라는 단위로 분할하면 프로그램의 구조를 간결하게 잡을 수 있고, 트랜잭션의 범위를 지정함으로써 오류에 효과적으로 대응할 수 있고, 작업 실행 부분의 병렬성을 자연스럽게 극대화 할 수 있다. 6.1. 스레드에서 작업 실행 - 프로그램에서 일어나는 일을 작업이라는 단위로 재구성하고자 한다면 가장 먼저 해야 할 일은 작업의 범위를 어디까지로 할 것인지 정하는 일이다. 원론적으로 보자면 작업은 완전히 독립적인 동작을 말한다. 독립성이 갖춰져 있어야 병렬성을 보장할 수 있다. 작업을 스케쥴링하거나 부하 분산(load balancing)을 하고자 할 때 폭넓은 유연성을 얻으려면 각 작업이 앱의 전체적인 업무 내용 가운데 충분히 작은 부분을.. 2017. 4. 24.
[Effective Java] 쓸모 없는 객체 참조를 제거하자. [Effective Java] 쓸모 없는 객체 참조를 제거하자. - 자바와 같이 가비지 컬렉션을 자동으로 해주는 언어는 메모리 관리를 따로 해줄 필요가 없다고 생각하기 쉬우나, 이는 틀린 생각이다. GC 의 원리에 대해 정확히 이해하고 메모리 관리를 해주어야 한다. 다만 그 메모리 관리하는 범위가 C, C++ 과 같은 GC 가 없는 언어들에 비해 더 간단할 뿐! - 자바에서도 메모리 누출(memory leak)이 쉽게 발견된다. 메모리 누수가 생기면, 성능저하의 형태로 서서히 나타난다. GC 작업이 증가하거나, 메모리 할당과 회수 횟수가 빈번해지기 때문이다. 심하면 디스크 페이징 현상이 나타나기도 하고, 아주 극단적으로는 OutOfMemoryError 가 발생한다. 메모리 누수의 무서운 점은, 특정 객체.. 2016. 1. 4.
[android] 일반적이지 않은 사진(이미지) 모양 만들기 #1 - 모서리가 둥근 사각형 일반적이지 않은 사진(이미지) 모양 만들기 #1 - 모서리가 둥근 사각형 출처 : http://blog.stylingandroid.com/archives/2656 2가지 이미지를 합성해, 사각형의 이미지를 다른 모양으로 바꿀 수 있다.이번에 알아볼 것은 모서리가 둥근 사각형을 이용하여, 사각형 이미지를 둥근 사각형 모양으로 masking 하는 것이다. public Bitmap combineImages(Bitmap bgd, Bitmap fg) { Bitmap bmp; int width = bgd.getWidth() > fg.getWidth() ? bgd.getWidth() : fg.getWidth(); int height = bgd.getHeight() > fg.getHeight() ? bgd.getHei.. 2015. 4. 11.
[android] Volley 를 이용한 동영상 업로드 테스트 결과. android, Volley 를 이용한 동영상 업로드 테스트 결과. 테스트 환경 국내 android major 단말들이라고 할 수 있는 Galaxy S 시리즈와 Note 1 을 대상으로 삼았다.동영상 업로드 방법은 Volley 와 MultipartRequest 를 이용한 일시 업로드이다. Galaxy S / hdpi / 2.3.4 - 12.5M 동영상 ( 30초 ) -process mem = 64MBruntime maxMemory = 64MBruntime totalMemory = 5MBruntime freeMemory = 2MBnative threshold = 26MBnative availMem = 83MB -Out of memory on a 26310336-byte allocation. java.lan.. 2014. 4. 20.
[android] OutOfMemoryError : bitmap size exceeds VM budget 을 해결해보자!!! 안드로이드, OutOfMemoryError : bitmap size exceeds VM budget해결해보자!! OutOfMemoryError: bitmap size exceeds VM budget 해결방법 #1 메니페스트의 applicaation tag 에 android:largeHeap="true" 를 준다.이 경우 원래보다 더 큰 용량의 힙 사이즈를 사용할 수는 있지만,GC 시간이 더 오래 걸리는 등의 문제가 생기기 쉽다.게다가 정확한 heap increase 가 보장되지 않는다. 결국 완벽한 solution 은 되지 못하고, 아주 특수한 상황에 한번씩 엄청난 양의 heap size 가필요할 때만 쓸 수 있는 미봉책정도가 되겠다. OutOfMemoryError: bitmap size exceeds .. 2013. 12. 13.
반응형