JNA中内存处理-释放动态库中分配的内存(新)

标签: jna 内存 释放 | 发表时间:2012-11-16 21:56 | 作者:greencacti
出处:http://blog.csdn.net

前面已经介绍过一次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;
        }
    }



作者:greencacti 发表于2012-11-16 21:56:05 原文链接
阅读:32 评论:0 查看评论

相关 [jna 内存 释放] 推荐:

JNA中内存处理-释放动态库中分配的内存(新)

- - CSDN博客推荐文章
前面已经介绍过一次JNA中内存释放方法,后经过实际分析,这样写的代码不是很优雅,实际项目中代码实现方法如下:. 如下是libvirt java binding实现代码存在内存泄露:. 如下是解决内存泄露的代码:. 作者:greencacti 发表于2012-11-16 21:56:05 原文链接.

Cassandra2.0 JNA配置

- - The Big Data Way,平凡但不乏味
Cassandra中通过JNA可以调用Native方法优化Jvm内存,大概意思就是不让操作系统将jvm内存置换到系统swap分区,从而提升jvm内存性能. On nodes with thousands of SSTables, this would take a very long time, because it had to fork+exec the JVM to run the new process.

JAVA内存释放

- - Java - 编程语言 - ITeye博客
(问题一:什么叫垃圾回收机制. ) 垃圾回收是一种动态存储管理技术,它自动地释放不再被程序引用的对象,按照特定的垃圾收集算法来实现资源自动回收的功能. 当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用,以免造成内存泄露. (问题二:java的垃圾回收有什么特点. ) JAVA语言不允许程序员直接控制内存空间的使用.

python内存不释放原理

- Sosi - shell's home
    在maillist里面看到无数次的有人问,python速度为什么这么慢,python内存管理很差. 如果你在意内存/CPU,不要用python,改用C吧. 就算C不行,起码也用个go或者java. 不过今天还是说说,python的内存为什么不释放.     首先,python的初始内存消耗比C大,而且大很多.

Python 内存不释放原理

- jyf1987 - python.cn(jobs, news)
在maillist里面看到无数次的有人问,python速度为什么这么慢,python内存管理很差. 如果你在意内存/CPU,不要用python,改用C吧. 就算C不行,起码也用个go或者java. 不过今天还是说说,python的内存为什么不释放.     首先,python的初始内存消耗比C大,而且大很多.

小技巧,快速释放Windows 7内存

- 夏天天下 - 软矿
相信很多人都会有这样的感觉,电脑开机长时间会明显变得缓慢,那是因为内存高速缓存无法刷新占用内存资源. 重启电脑自然可以将内存缓存清空但是就是得重启. 其实系统自带清空内存命令,你完全可以通过这样的方式快速实现. 快速释放Windows 7内存教程:. Step1 -右键点击桌面新建一个快捷方式;. Step2 -复制下面的Code到对象位置;.

关于Android程序退出后内存释放的问题

- - CSDN博客推荐文章
做 Android项目的时候发现一个问题:当应用程序退出了,点击"设置"查看应用程序,界面显示着可以点击"强制关闭".. 我认为造成这样的原因是还有开启的activity没有被destroy,然后做调试,之后发现开启的activity应该是全部都被. destroy了.但是结果还是显示可以点击"强制关闭"..

Oracle 如何释放数据库空间

- - 数据库 - ITeye博客
        当需要释放数据库空间的时候,通常的方案会用有truncate、delete、drop/re-creating等处理. 其中truncate 后会立即释放,并且不能回滚;但delete不能立即释放数据库空间,还会产生archive log.     如: Truncate table xxxx; 我们可以直接去查user_segments对应table的bytes就变小,数据库空间释放,并且不能回滚.

MongoDB与内存

- 高春辉 - 火丁笔记
但凡初次接触MongoDB的人,无不惊讶于它对内存的贪得无厌,至于个中缘由,我先讲讲Linux是如何管理内存的,再说说MongoDB是如何使用内存的,答案自然就清楚了. 据说带着问题学习更有效,那就先看一个MongoDB服务器的top命令结果:. 这台MongoDB服务器有没有性能问题. 先讲讲Linux是如何管理内存的.