cocos2d-x 3.0 版本plugin-x framework JNI Memory Leak

What’s the issue?
plugin-x framework Memory Leak
What’s the engine version?
cocos2d-x 3.0beta2 cocos2d-x 3.0rc0
How to reproduce it?
cpp调用callFuncWithParam方法有内存泄漏

E/dalvikvm( 1206): JNI ERROR (app bug): local reference table overflow (max=512)
W/dalvikvm( 1206): JNI local reference table (0x75801668) dump:
W/dalvikvm( 1206): Summary:
W/dalvikvm( 1206): 273 of java.lang.Class (5 unique instances)
W/dalvikvm( 1206): 59 of java.lang.String (59 unique instances)
W/dalvikvm( 1206): 1 of java.lang.Integer
W/dalvikvm( 1206): 3 of dalvik.system.PathClassLoader (1 unique instances)
W/dalvikvm( 1206): 175 of org.json.JSONObject (88 unique instances)
W/dalvikvm( 1206): 1 of org.cocos2dx.plugin.AdsAdmob

LOG看出有273个Class,59个String,175个JSONObject。

附件是已修复一部分内存泄漏的代码(修复了JNI中java.lang.Class,java.lang.String的内存泄漏)
暂时没有修复JNI中org.json.JSONObject的内存泄漏。望cocos2d-x工作组能修复此一系列在JNI中的内存泄漏bug,并发布到官方版本。


PluginUtils.cpp.zip (3.0 KB)


PluginJniHelper.cpp.zip (2.2 KB)

Thanks for your feedback. I will solve it as soon as possible.

@cocos2dx_tony
I use your method,but this problem still exist.i wish you can help me

JNI ERROR (app bug): local reference table overflow (max=512)
JNI local reference table (0x50f5d880) dump:
Last 10 entries (of 512):
511: 0x4177b0c8 java.lang.String “cocos2d-x”
510: 0x40e8b218 java.lang.Class<android.util.Log>
509: 0x4177b110 java.lang.String " FUNCTION: getVi… (30 chars)
508: 0x40e8b218 java.lang.Class<android.util.Log>
507: 0x40e8b218 java.lang.Class<android.util.Log>
506: 0x40e8b218 java.lang.Class<android.util.Log>