Nexus One, Android 2.2에서 앱을 실행할 때 이상한 문제가 발생했습니다. 내 응용 프로그램에서는 NDK로 작성된 네이티브 .so lib를 사용했습니다. Java 코드에는 2 개의 스레드가 있습니다. 하나의 UI 스레드, 네이티브 코드를 실행하는 lib, 그리고 결과 데이터로 UI를 업데이트합니다. C++ 코드에서 "myMethod"라는 특정 메서드가 호출 된 시간을 기록하고 "myMethod"가 호출 될 때마다 카운트가 하나씩 증가하는 전역 변수 "int count"가 있습니다. Nexus One에서 Android 2.2를 사용하여 앱을 실행하면 이상한 문제가 발생합니다. 내 기록에서 카운트는 1, 2, 3이고 메시지에 "08-24 12 : 32 : 57.961 : DEBUG/dalvikvm (19244) : GC_FOR_MALLOC이 (가) 267 개 개체/13712 바이트를 48ms 내에 해제했습니다"라고 표시됩니다. 이 GC_FOR_MALLOC 이벤트가 끝나면 1부터 다시 시작한 다음 2, 3, 4 ... 다시 똑같은 "myMethod"를 실행하는 두 개의 스레드가 있고 각각의 출력이 서로 섞여서 출력됩니다 무작위로 추적하십시오. 나는 안드로이드 에뮬레이터, 2.1 또는 2.2에 정확히 동일한 코드와 같은 응용 프로그램을 실행하면 예를 들어, 추적이NDK, Nexus One의 이상한 C++ 코드 문제
1, 2, 3, GC_FOR_MALLOC, 1, 2, 3, 4, 5, GC_FOR_MALLOC, 4, 5, 6, GC_FOR_MALLOC, 6, 7...
수 있습니다 문제가 나타났다 결코 및 에뮬레이터에는 GC_FOR_MALLOC 이벤트가 없습니다.
이전에이 문제가 발생 했나요? 도움을 주셔서 감사합니다.
답장을 보내 주셔서 감사합니다. 오늘 같은 환경에서 동일한 코드를 실행할 때 문제가 발생하지 않았으며 GC_FOR_MALLOC 이벤트도 발생하지 않았습니다. dalvikvm에서 벌레처럼 보입니까? 나는 잘 모르겠다. – MaratSafinWang