를 사용하여 나는 XML 직렬화에 대한 SimpleFramework를 사용하는 안드로이드 응용 프로그램을 가지고있다. 응용 프로그램은 lags없이 테스트 한 모든 실제 장치에서 잘 실행되지만 에뮬레이터에서 실행할 때 가비지 수집기가 실행될 때마다 약 3 분 동안 실행됩니다. 여기 과도한 가비지 컬렉션 안드로이드 에뮬레이터에서 (GC_FOR_MALLOC) simpleframework
는 지금까지 관찰 한 내용입니다 :- 쓰레기 수집 차기 단지 XML 객체를 직렬화하기 전에
- 최초의 객체 직렬화 및 네트워크를 통해 전송하고,하지 않는 전에에만 발생 연속적인 통화에 대해 발생합니다.
- 직렬화 코드는 패키징되어 프로젝트의 .jar 파일로 추가되는 별도의 라이브러리에 있습니다. , 분명히
, 이것은 많은 시간을 차지 : 여기public String fromElement(Object request) { Writer writer = new StringWriter(); try { serializer.write(request, writer); String res = writer.toString(); Log.d(LOG_TAG, res); return writer.toString(); } catch (Exception e) { e.printStackTrace(); } return ""; }
07-27 08:17:10.275: D/dalvikvm(682): GC_FOR_MALLOC freed 10179 objects/482344 bytes in 32ms 07-27 08:17:10.435: D/dalvikvm(682): GC_FOR_MALLOC freed 13927 objects/535968 bytes in 33ms ....... About 300 more similar entries...
내가 현재 직렬화 사용하고 코드입니다 : 여기
는 로그 캣의 출력입니다 코드를 변경하고 앱을 다시 배포 할 때마다 다른 사람이 libaray를 사용할 때 이것을 경험 했습니까? 그렇다면, (실행으로부터) app을 실행할 때마다 GC가 실행되는 것을 막을 수있는 방법이 있습니까? 힙 (현재 vm.heapSize=24
으로 설정)을 늘리면 도움이 될까요? 아니면 다른 해결책이 있습니까?
새 버전 (2.6.9)으로 업그레이드하면 문제가 해결 된 것 같습니다. – Jeshurun