본문 바로가기
Efficient Android Threading #4 메모리 관리 Efficient Android Threading #4 메모리 관리 이 글은 Efficient Android Threading 의 일부 내용만 발췌한 내용입니다.자세한 내용은 책을 구입해서 보세용.6.1. 가비지 컬렉션 -각 프로세스(결과적으로 각 앱)는 자신만의 VM 과 가비지 컬렉터를 가진다. -진저브레드까지 안드로이드의 가비지 컬렉션은 메모리가 회수되는 동안 앱 실행이 중지되는 순차적 실행이었다.이는 UI rendering 의 일시적 멈춤으로 이어질 수 있었다.허니컴부터 GC 는 앱 스레드를 중지하지 않고 자체 스레드에서 동시적으로 실행된다. -달빅 GC 는 mark & swap 이라는 일반적인 두 단계 메커니즘을 사용한다.마크 단계는 객체 트리를 탐색하고 다른 객체에 의해 참조되지 않는 모든 미사.. 2018. 3. 20.
Docker 에 대한 이해 Docker 에 대한 이해 http://bcho.tistory.com/805 -Docker 는 Linux 기반 & Container 기반 Runtime Open Source 이다.VM 과 비슷하면서 다르다. -VM 은.. Host OS 가 깔리고 그 위에 Hypervisor (VMWare, KVM, Xen 등 ) 가 깔리고, 그 위에 VM 이 만들어지는 구조이다.VM 은 x86 하드웨어를 가상화 한 것.다양한 종류의 OS 설치 가능 -Docker 도 VM 처럼 Docker Engine 이 Host OS 위에서 수행된다.VM 대신 Container 들이 생기는 구조인데, 이 Container 들은 Linux 기반의 OS만 수행 가능하다.Hardware 를 가상화 해주는 것이 아니라, Guest OS(Con.. 2017. 6. 8.
[Effective Java] Serializable 인터페이스를 분별력 있게 구현하자. [Effective Java] Serializable 인터페이스를 분별력 있게 구현하자. - 객체 직렬화(object serialization) API 는 객체를 바이트 스트림으로 인코딩하고, 인코딩된 바이트 스트림으로부터 객체를 복원(디코딩) 하는 프레임워크이다. - 객체를 바이트 스트림으로 인코딩하는 것을 직렬화(serializing)이라 하고, 그 반대의 절차를 역직렬화(deserializing)이라고 한다. - 객체가 일단 직렬화되면, 인코딩된 객체는 향후에 역직렬화 하기 위해 하나의 실행 중인 VM 에서 다른 VM 으로 전송되거나 디스크에 저장될 수 있다. 직렬화는 원격 통신을 위한 표준 통신 회선 수준의 객체 표현을 제공한다. 직렬화 프록시는 effective java 의 직렬화 주제중 가장 .. 2017. 3. 21.
[Effective Java] 늦 초기화를 분별력 있게 사용하자 [Effective Java] 늦 초기화를 분별력 있게 사용하자 - 늦 초기화는 양날의 검이다. 클래스를 초기화하거나 인스턴스를 생성하는 비용은 줄여주지만, 그 대신 늦게 초기화되는 필드의 접근 비용은 증가시킨다. 늦 초기화는 실제로 성능을 저하시킬 수 있다. ( 다른 많은 최적화 처럼 ) - 늦 초기화는 나름의 용도가 있다. 만일 어떤 필드가 어떤 클래스 인스턴스의 일부로만 사용되고, 그러면서 그 필드의 초기화 비용이 많이 든다면 늦 초기화가 좋을 수 있다. 확실히 하기 위해서는 역시나 성능을 측정하는 것이 좋겠다. - 다중 스레드의 경우에는 늦 초기화가 쉽지 않다. 만일 두 개 이상의 스레드가 늦게 초기화되는 필드를 공유한다면, 어떤 형태로든 동기화 하는 것이 중요하며, 동기화를 하지 않으면 심각한 .. 2017. 3. 16.
[Effective Java] 공유하는 가변 데이터에 접근 시 동기화하자. [Effective Java] 공유하는 가변 데이터에 접근 시 동기화하자. - 동기화를 하지 않으면, 하나의 스레드에서 변경한 내용을 다른 스레드에서 못 볼 수 있다. 동기화는 불안정 상태의 객체를 스레드가 볼 수 없도록 하는 것은 물론, 동기화된 메소드나 블록에 진입하는 각 스레드가 앞에서의 모든 변경(같은 락으로 보호되었던)이 반영된 결과를 볼 수 있게 해준다. - 자바 언어 명세에서는 long 이나 double 타입이 아닌 변수의 값을 읽거나 쓸 때는 원자성을 보장한다. long 이나 double 타입이 아닌 변수의 값을 읽으면 어떤 스레드가 그 변수에 저장했던 값을 반환 받을 수 있다는 것. 실제로 동기화하지 않고 여러 스레드가 그 변수를 동시에 수정해도 그때그때 수정된 값이 반영된다. 스레드가 .. 2017. 3. 7.
Windows8 Metro app 을 Windows 7 이나 XP 에서도 돌릴 수 있나요? Windows8 Metro app 을 Windows 7 이나 XP 에서도 돌릴 수 있나요? - 먼저 대답은 No!! - 현재 어떤 회사에서 virtual machine 방식으로 개발하는 회사들이 있다는 썰은 있지만, 공식적으로는 Metro app 은 Windows 8 이상에서만 돌게 되어 있음. 돼지왕왕돼지, metro app, virtual machine, vm, windows xp, windows7, windows8, Windows8 Metro app 을 Windows 7 이나 XP 에서도 돌릴 수 있나요?, XP, 공식, 매트로 앱, 썰, 호환성, 회사 2016. 4. 20.
이클립스 실행시 Java was started but returned exit code=1 에러가 날때 이클립스 실행시 Java was started but returned exit code=1 에러가 날때 eclipse 폴더 에 있는 eclipse.ini 파일에 아래 구문을 추가해주자. -vmC:\Program Files\Java\jdk1.8.0_05\bin\javaw.exe eclipse, eclipse.ini, Java was started but returned exit code=1, vm, 이클립스 실행시 Java was started but returned exit code=1 에러가 날때 2015. 6. 23.
[android] flood fill algorithm performance tests. android, flood fill algorithm performance tests. 위와 같은 공룡의 엉덩이, 발, 그리고 꼬리에 이르는 부분을 FloodFill algorithm 을 적용하여 색칠해보았다.avg 값은 5회의 결과를 평균 낸 값이다. 1. Very Intuitive and Simple Flood Fill Algorithm Recursive method call 을 이용하여, 한 점을 기준으로 동,서,남,북 pixel 에 대해 recursive call 을 호출하는 방식이다. private void floodFill3(Bitmap bitmap, Point fillStartPoint, int targetColor, int replacementColor){Queue queue = new L.. 2014. 4. 11.
[android] Launch UX Improvement. [android] Launch UX Improvement. reference : http://cyrilmottier.com/2013/01/23/android-app-launching-made-gorgeous/ Summary 안드로이드는 activity theme 에 따라 view 가 완전히 불러지기 전에 preview window 를 보여준다.이 때 theme 을 제대로 control 하지 않으면 이상한 전환 현상을 보여주기 때문에 부자연스럽다. 이를 개선하기 위해서 첫번째로..actionbar 를 사용하지 않으면 이를 제거해주자.theme 의 parent 를 android:Theme.Holo.NoActionBar 를 주면 된다. 두번째로는 배경화면을 기본 시작화면 색깔과 맞추는 것이 좋다.그렇다고 Sp.. 2014. 4. 4.
반응형