初次使用JNI做项目
初次使用JNI做JAVA的正规项目,在经历了两个星期的痛苦之后,先后遇到了几十类问题,今天终于都解决了。
主要有几下问题:
1、C++的组件封装问题;对于未知源码,只知接口的DLL进行调用,需要自己写一个C++的程序来调用。
2、第三方平台非常复杂,由于是基于C++写的,可能存在内存泄漏的问题,怎么找出来?
3、怎么测试自己写的C++程序与JAVA互调没有问题?
4、这些DLL和相关资源文件在JAVA项目实际布署中怎么放置?我使用的第三方平台可达100M,含加密狗;系统结构比较复杂;
5、多线程情况下第三方组件的承压能力、自己写的C++承压能力以及JAVA的承压能力测试。
6、优化JVM,通过调整JVM的参数调优;此间遇到了C++里使用栈过深(约使用到近1M),导至启动不了的问题,后给JVM添加-Xss400k,才启动。
7、自己封装的C++里面怎么处理JAVA传入的字符?哪些内存是java需要释放的,哪些是C++需要释放的。
8、JAVA类型与C++类型互换的问题,以及合理地设置缓存字段来处理大量的findClass等C++操作JVM的情况。
9、由于我不会C++,才开发了这么久。回过头来看看,两个工作日也许就能完成,这也是一教训。