[libvirt] Memory free in libvirt JNA
Daniel Veillard
veillard at redhat.com
Wed Sep 12 12:23:28 UTC 2012
On Sun, Sep 09, 2012 at 02:09:45PM +0000, Benjamin Wang (gendwang) wrote:
> Hi,
> I wrote a code to verify the memory leak problem as following.
> C code in so:
> void checkJNAMemLeak1(int **head, int *length)
> {
> long i = 0;
>
> *head = (int *)malloc(sizeof(int) * 100000000);
> for(i=0; i<100000000; i++)
> {
> (*head)[i] = 1;
> }
>
> *length = 100000000;
> }
>
> Java code:
> public static void testJNAMemLeak1()
> {
> PointerByReference head = new PointerByReference();
> IntByReference length = new IntByReference();
>
> while(true)
> {
> libben.checkJNAMemLeak1(head, length);
> System.out.println(length.getValue());
> sleep(1);
>
> }
> }
>
> When we check memory by top command, the virt and res will increase very quickly. When we check with jconsole, there is no memory in Java heap. Even I execute GC manually by jconsole. Nothing happen.
>
> If I change java code as following:
> public static void testJNAMemLeak1()
> {
> PointerByReference head = new PointerByReference();
> IntByReference length = new IntByReference();
>
> while(true)
> {
> libben.checkJNAMemLeak1(head, length);
> System.out.println(length.getValue());
> sleep(1);
>
> libc.free(head.getValue());
> }
> }
>
> public static void testJNAMemLeak1()
> {
> PointerByReference head = new PointerByReference();
> IntByReference length = new IntByReference();
>
> while(true)
> {
> libben.checkJNAMemLeak1(head, length);
> System.out.println(length.getValue());
> sleep(1);
>
> libc.free(head.getValue());
> }
> }
>
> Then everything works well. The virt and res will not increase.
> I think we must provide the free functions for all the memory allocated by libvirt.
Okay, can you work on making a patch ? To be honnest I'm very unlikely
to have time for this in the short term,
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list