在上篇文章中介绍了JNI常见错误,这篇文章将描述JNI开发中内存泄露问题。在Java编程中,内存泄漏可以根据泄漏的内存位置划分为两种:一种是JVM中的Java Heap的内存泄漏。另外一种是JVM中的Native memory内存泄漏。
一、Java Heap内存泄漏
Java对象存储在JVM进程空间中的Java Heap中,Java Heap可以在JVM运行过程中动态变化。如果Java对象越来越多,占据Java Heap的空间也越来越大,JVM会在运行时动态扩展Java Heap的容量。如果Java Heap容量扩充到了上限,并且GC后仍然没有足够的空间分配新的Java对象,便会抛出OutOfMemory错误,导致程序崩溃。