Hi all,

Here is  what we have

1. We are using Sqlite provider from
<http://system.data.sqlite.org/downloads/1.0.94.0/sqlite-netFx35-binary-Pock
etPC-ARM-2008-1.0.94.0.zip>
sqlite-netFx35-binary-PocketPC-ARM-2008-1.0.94.0.zip on Windows Mobile 6.5
in several our projects written using compact framework 3.5
2.  Operation system we are targeting is Windows Mobile - famous for its
inherent restriction of virtual memory usage. Every process has the frame of
nearly 20 megabytes of RAM (declared value is 32 megabytes minus system dll
and shared libraries). 
3. We are developing software for large vessels and cruise liners.
Application uses a fairly moderate database when talking about this
environment&size - Sqlite file takes up around 3-6 megabytes depending on
liner size and people traveling in.
>From the moment user launches the application the last has to run "almost"
forever until cruise ends (approximately 2 weeks)without restarting and
always has to be ready to run as application deals with emergency cases in
particular. 

5. Application syncs data with remote web service to have up-to-date data
all the time(there is some accepted delay). Throughout the whole cruise
Database gets refreshed completely on the device several times as people
moving onboard/ashore every day.

6. Application itself was thoroughly tested for memory-leaks.

And now the main issue we are struggling with:

Total Virtual memory allocations size made by Sqlite core seems to grow in
time in application process even though Sqlite connection get closed on a
regular basis.
For example if we do search touching several tables in sqlite database it
seems like sqlite core uses memory-mapped IO to do its job done before
returning results of a query.
There are of course other quires that touch almost all tables in the
database. It results in growing virtual memory footprint and fragmentation.
However it looks like Sqlite never releases that allocated virtual memory
space in application process even after we close the sqlite connection and
delete sqlite DB file from storage.
So you imagine if for several days database changes and sqlite engine uses
more and more memory-mapped pages we will end-up with "Out-of-memory"
situations.

Is there any logic behind when sqlite engine releases VM memory?

Is there any control or configuration we can apply to sqlite core to
instruct regard memory policies?

Thank you in advance for your time. 

Thanks, Pavlo.

 

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to