나는 Hessian/hessdroid를 통해 서버에서 데이터를 검색하는 서버/클라이언트 응용 프로그램이 있습니다. 데이터는 다른 HashMaps 및 바이트 배열로 저장된 이미지를 포함하는 HashMaps와 매우 복잡합니다. 데이터를 완벽하게 표시 할 수 있습니다.HashMap 비 직렬화
서버를 항상 쿼리하지는 않지만 데이터 구조를 캐시로 사용하고 있습니다. 이 데이터 객체는 앱을 닫을 때 ObjectOutputStream을 사용하여 SD 카드에 저장합니다. 다시 시작하면 ObjectInputStream을 사용하여 메모리로 다시 읽습니다.
SD 카드에서 데이터를 읽은 후에 만 앱에 문제가 있습니다. 힙이 ~ 17메가바이트 응용 프로그램 충돌에 성장하면
INFO/dalvikvm-heap(4150): Grow heap (frag case) to 10.775MB for 281173-byte allocation
: 다른 메시지 사이
DEBUG/dalvikvm(4150): GetFieldID: unable to find field Ljava/util/HashMap;.loadFactor:F
이의 : 로그 캣은 나에게 다음과 같은 출력 (100 번)를 제공합니다.
HashMap 직렬화에 관한 여러 스레드를 읽었을 때 아키텍처간에 직렬화 할 때 버그가있는 것 같았지만 나에게는 Hessian을 통한 데이터 전송이 완벽하게 작동하고 디스크에서 HashMaps를 읽을 때만 설명한 문제가있었습니다.
아이디어가 있으십니까?
데이터를로드하고 직렬화 해제 한 코드를 게시 할 수 있습니까? –
로그 고양이와 얼 (Earl)이 언급 한 소스 코드의 전체 덤프를 추가하십시오. 여기에 언급 한 내용에서 메모리 부족 문제와 같은 냄새가납니다 (http://code.google.com/p/android/issues/detail?id=14869). –