java调用GDAL,接口运行一次出现A fatal error has been detected by the Java Runtime Environment,需要手动释放指针对象(DataSource)

发布时间 2023-04-23 22:53:31作者: 独孤明人

参考文章:https://www.jianshu.com/p/4bffe29e3a02

问题描述:通过调用GDAL写的SpringBoot接口,第一次访问成功,第二次报错,显示报错的位置为gdal库。

尝试了很多方法https://www.cnblogs.com/jokingremarks/p/15132599.html#!comments仍然不成功,感觉应该是第二次运行接口时,进行垃圾回收导致GDAL出现问题。

参考https://blog.csdn.net/beibei3321/article/details/124998062,该问题是调用编写Java程序,通过JNA调用C语言开发的DLL出现的,作者并进行了原因分析并提供了解决方案,具体如下:

 Java手动释放指针对象的代码如下所示https://www.jianshu.com/p/4bffe29e3a02

 原本代码通过调用DataSource对象的delete()函数,改成如上图所示的操作,问题得以解决。

原本:dataSource.delete();

现在:调用函数释放资源

deleteDataSource(dataSource);