说起这个问题来就牛逼大了,俺弄了差不多两天才定位到。
jni内存泄露定位起来真特么麻烦,受不鸟
现象
先说一下结果吧,我是做在线视频应用的,数据得由C往Java层抛。俺在测试的时候发现拿一台机器跑几个小时候就木有内存了,报如下错误:
07-10 19:31:46.871: E/dalvikvm-heap(3756): Out of memory on a 126-byte allocation.
07-10 19:31:46.871: I/dalvikvm(3756): Can't dump thread 5041: threadObj not set
07-10 19:31:46.871: E/dalvikvm(3756): Out of memory: Heap Size=32775KB, Allocated=29914KB, Bitmap Size=0KB, Limit=32768KB
07-10 19:31:46.871: E/dalvikvm(3756): Extra info: Footprint=32711KB, Allowed Footprint=32775KB, Trimmed=468KB
07-10 19:31:46.871: W/dalvikvm(3756): Could not allocate message string "(null)" while throwing internal exception (Ljava/lang/OutOfMemoryError;)
然后哥就各种定位啊,你想啊,肯定不是视频数据的内存泄露,一来我使用了复用的内存块,二来如果是视频数据泄露,每一帧数据都有640*480这么大ÿ