Return-Path: X-Original-To: apmail-clerezza-dev-archive@www.apache.org Delivered-To: apmail-clerezza-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 4899B10D4C for ; Fri, 29 Nov 2013 12:32:06 +0000 (UTC) Received: (qmail 5699 invoked by uid 500); 29 Nov 2013 12:32:06 -0000 Delivered-To: apmail-clerezza-dev-archive@clerezza.apache.org Received: (qmail 4883 invoked by uid 500); 29 Nov 2013 12:32:01 -0000 Mailing-List: contact dev-help@clerezza.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@clerezza.apache.org Delivered-To: mailing list dev@clerezza.apache.org Received: (qmail 3818 invoked by uid 99); 29 Nov 2013 12:31:59 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 29 Nov 2013 12:31:59 +0000 X-ASF-Spam-Status: No, hits=2.2 required=5.0 tests=DC_PNG_UNO_LARGO,HTML_IMAGE_ONLY_32,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: local policy includes SPF record at spf.trusted-forwarder.org) Received: from [194.109.24.34] (HELO smtp-vbr14.xs4all.nl) (194.109.24.34) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 29 Nov 2013 12:31:52 +0000 Received: from [10.0.0.100] (D97AD3BE.cm-3-3d.dynamic.ziggo.nl [217.122.211.190]) (authenticated bits=0) by smtp-vbr14.xs4all.nl (8.13.8/8.13.8) with ESMTP id rATCVUhB098938 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Fri, 29 Nov 2013 13:31:31 +0100 (CET) (envelope-from minto@xup.nl) Message-ID: <52988920.2060206@xup.nl> Date: Fri, 29 Nov 2013 13:31:28 +0100 From: Minto van der Sluis Organization: Xup BV User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.1.1 MIME-Version: 1.0 To: dev@clerezza.apache.org Subject: Re: Is Clerezza leaking memory? References: <52974275.5050401@xup.nl> <529852BB.4080008@apache.org> In-Reply-To: <529852BB.4080008@apache.org> X-Enigmail-Version: 1.6 Content-Type: multipart/alternative; boundary="------------050401080202070609020502" X-Virus-Scanned: by XS4ALL Virus Scanner X-Virus-Checked: Checked by ClamAV on apache.org --------------050401080202070609020502 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Andy Seaborne schreef op 29-11-2013 9:39: > On 28/11/13 13:17, Minto van der Sluis wrote: >> Hi, >> >> I just ran into some peculiar behavior. >> >> For my current project I have to import 633 files each containing >> approx 20 MB of xml data (a total of 13 GB). When importing this data >> into a single graph I hit an out of memory exception on the 7th file. >> >> Looking at the heap I noticed that after restarting the application I >> could load a few more files. So I started looking for the bundle that >> consumed all the memory. It happened to be the Clerezza TDB Storage >> provider. See the following image (GC = garbage collection): >> >> >> >> >> Looking more closely I noticed that Apache Jena is able to close a >> graph (graph.close()) But Clerezza is not using this feature and is >> keeping the graph open all the time. > > Jena graphs backed by TDB are simply views of the dataset - they don't > have any state associated with them directly. If the reference become > inaccessible, GC should clean up. Hi Andy, The problem, as far as I can tell, is not in Jena TDB itself. The Jena TDB bundle is still active/running. Only the Clerezza TDB Provider bundle is stopped (by me). Like my image shows a normal GC does not release all of the memory. Only after stopping the Clerezza TDB Provider memory allocated for importing is release. Because of stopping this particular bundle all jena datastructures become inaccessible and eligible for GC. Just like the image shows. My reasoning is that since the Clerezza TDB Provider has a map with weak references to Jena models these references are never properly garbage collected. Since I use the same graph all the time all data gets accumulated and resulting in out of memory. Looking at a memory dump, most space is occupied by byte arrays containing the imported data. I use a nasty hack to prevent this dreaded out of memory. After every import I restart the Clerezza TDB Provider bundle programmatically (hail OSGI for I wouldn't know how to do this without OSGI). Like this I have been able to import more that 300 files in a row (still running). Regards, Minto --------------050401080202070609020502 Content-Type: multipart/related; boundary="------------060801040104010809070400" --------------060801040104010809070400 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit
Andy Seaborne schreef op 29-11-2013 9:39:
On 28/11/13 13:17, Minto van der Sluis wrote:
Hi,

I just ran into some peculiar behavior.

For my current project I have to import 633 files each containing approx 20 MB of xml data (a total of 13 GB). When importing this data into a single graph I hit an out of memory exception on the 7th file.

Looking at the heap I noticed that after restarting the application I could load a few more files. So I started looking for the bundle that consumed all the memory. It happened to be the Clerezza TDB Storage provider. See the following image (GC = garbage collection):




Looking more closely I noticed that Apache Jena is able to close a graph (graph.close()) But Clerezza is not using this feature and is keeping the graph open all the time.

Jena graphs backed by TDB are simply views of the dataset - they don't have any state associated with them directly.  If the reference become inaccessible, GC should clean up.
Hi Andy,

The problem, as far as I can tell, is not in Jena TDB itself. The Jena TDB bundle is still active/running. Only the Clerezza TDB Provider bundle is stopped (by me). Like my image shows a normal GC does not release all of the memory. Only after stopping the Clerezza TDB Provider memory allocated for importing is release. Because of stopping this particular bundle all jena datastructures become inaccessible and eligible for GC. Just like the image shows.

My reasoning is that since the Clerezza TDB Provider has a map with weak references to Jena models these references are never properly garbage collected. Since I use the same graph all the time all data gets accumulated and resulting in out of memory. Looking at a memory dump, most space is occupied by byte arrays containing the imported data.

I use a nasty hack to prevent this dreaded out of memory. After every import I restart the Clerezza TDB Provider bundle programmatically (hail OSGI for I wouldn't know how to do this without OSGI). Like this I have been able to import more that 300 files in a row (still running).

Regards,

Minto



--------------060801040104010809070400 Content-Type: image/png Content-Transfer-Encoding: base64 Content-ID: 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 --------------060801040104010809070400-- --------------050401080202070609020502--