JNA中内存处理-释放动态库中分配的内存(新)
- - CSDN博客推荐文章前面已经介绍过一次JNA中内存释放方法,后经过实际分析,这样写的代码不是很优雅,实际项目中代码实现方法如下:. 如下是libvirt java binding实现代码存在内存泄露:. 如下是解决内存泄露的代码:. 作者:greencacti 发表于2012-11-16 21:56:05 原文链接.
前面已经介绍过一次JNA中内存释放方法,后经过实际分析,这样写的代码不是很优雅,实际项目中代码实现方法如下:
如下是libvirt java binding实现代码存在内存泄露:
Libvirt.java
public String virConnectGetHostname(ConnectionPointer virConnectPtr);
Connect.java
public String getHostName() throws LibvirtException {
String returnValue = libvirt.virConnectGetHostname(VCP);
processError();
return returnValue;
} 如下是解决内存泄露的代码:
Libvirt.java
public Pointer virConnectGetHostname(ConnectionPointer virConnectPtr);
Connect.java
public String getHostName() throws LibvirtException {
Pointer returnValue = libvirt.virConnectGetHostname(VCP);
processError();
if(returnValue == null) {
return "";
}
else {
String result = returnValue.getString(0);
Native.free(Pointer.nativeValue(returnValue));
return result;
}
}