RSS Feed c9 logo Australia's best motorcycle shop retail software

Some operations in c9 require more memory than c9 may have available and are very memory hungry.  i.e. importing and processing high resolution Harley catalog diagrams.  Normally, java's default behaviour in terms of memory is more than ample for c9's relatively modest needs.  Though there are exceptions.  You only need to worry about contents on this page is c9 support have explicitly directed you here.

Firstly, to check how much memory c9 allocates. Select From top menu, Terminal and the System Monitor.  A window will appear in bottom left. The second number indicates amount of memory allocated. e.g.  from below ~ 450  MB.  c9 will comfortably run with 50Mb.  Most terminals will have java allocating itself approx 120Mb or 240MB: which is more than what c9 needs for normal day-to-day usage.



To run c9 and specify amount of memory. First make sure java is not running by selecting File - > Exit and Restart java. Then put following on command line. 512m means 512 MB. Substitute this with amount of memory you want to allocate.


cd \c9

java -Xmx512m -jar startup.jar

After restarting. Select system monitor to ensure memory change was applied.

Some more technical details

Amount of memory allocated to Java is dependent on version of java you run and memory on computer. Java will allocate a % of main memory when allocating. It depends on version of java. Some go for 1/8, some 1/4, some 1/16. Again depends on version.  The java community constantly argue over what is the most optimum allocation by default; hence the variations. Problem is there is not obvious or correct answer.

For c9, 128M in the second number represents a solid allocation of memory that will serve c9 without problem. Your computers are allocating double that by default so you have plenty. C9 will run on less, it will run on as little as 48M, it runs reliably on 64M, but some things may cause it to crash due to insufficient memory, i.e. importing large xls price files.

THe first number is how much memory java is using.  There is a difference between how much memory java uses and how much it needs.  Java uses a memory model known as tracing garbage collection.  What this means is that Java will be greedy with memory, and eat as much as available and initially not bother with reusing anything it used previously even though it is no longer in use. But when there is not alot of work happening, or it starts to run out of memory, it will take out the trash, i.e. analyze memory used so far, figure out what is no longer usable by the program and repurpose it for later reuse/recycling. i.e. garbage collect and shrink back to is minimum memory and then start consuming again.  The button 'compact' on that screen forces a garbage collect cycle.  This model has many advantages over older system that use memory and then release it immediately when they are finished. (i.e. c8).  One advantage is performance, c9 does not waste time freeing memory while you are in the middle of things.  It just allocates and does work and worries about housekeeping later, which means it has less things to do when doing a job.  When computer is idle, the 'garbage' memory that is accumulated is inspected and compacted.