Users of QuickBooks Enterprise 15R4 are starting to report symptoms suggestive of ‘memory leaks’, and at least one Intuit technical support staffer has indicated that there is a memory leak issue plaguing this release. Memory leaks are not something new to QuickBooks, in fact in QuickBooks Enterprise 14R4 one of the fixes identified in the release notes advised that the release “Fixed a memory leak that caused performance issues with QuickBooks.” An undisclosed source advised me that Enterprise 15 was supposed to resolve other ‘memory leaks’ and yet ‘memory leaks’ (or at least ineffective memory management) are still creating significant performance issues for some users.
It’s unfortunate that enough users must decide to go ahead and install a new release and/or update in order for there to be sufficient product exposure within the real world for problems like this to finally start to become identified. Obviously those who choose to wait until the ‘all clear’ is given, are at an advantage that those early adopters of version/revision changes simply have lost; after all there really is no ‘going back’ in QuickBooks without restoring a prior version and back-up which could mean several weeks of data recreation.
I guess I could stop with simply reporting this irregularity, but I find myself wanting to insure that my readers have at least some basic idea of what we are talking about when I say “memory leak”. Memory leaks occur when a computer program incorrectly manages memory allocation, this may result in (1) memory that is no longer needed not being released to free memory, or (2) data stored in memory cannot be accessed by the running code of a program. Memory leaks have symptoms similar to several other problems, and those symptoms include diminished performance of an application even to the point that the application slows to unacceptable levels, in severe cases applications may completely fail. Memory leaks usually result from the malfunction of one or more programs, or program components. Basically, the program fails to release memory, that is no longer being used, back into the pool of available memory.
I probably should briefly review how ‘memory’ works in your computer. Memory (often called RAM, DRAM, SDRAM, ECC or Non-ECC) is the component of your computer that provides short-term data access. Your computer's operations are performed using short-term data access; functions like editing the QuickBooks database rely on memory. Memory works in conjunction with the computer’s processor and hard drive to access and use your data. If you want to access data within QuickBooks and post some changes to a transaction, here's what's going on inside your computer. Looking at this from a single-user mode perspective both the QuickBooks application and your QuickBooks Company File(s) are resident on your hard drive. When you click the QuickBooks Icon your computers processor directs Windows to load the QuickBooks application from your hard drive into to the computer’s memory for short-term access and use.
As soon as you tell QuickBooks to open a specific Company File (even if it defaults to your last open company), the ‘memory manager’ function within the QuickBooks application tells the computer’s processor to directs the operating system to begin loading your QuickBooks Company File into the computer’s memory; this data is held in a section of memory that computer professionals refer to as ‘cache’. (You can check out another article of mine about how QuickBooks uses ‘cache memory’). Typically QuickBooks will load only a portion of your Company File into cache (memory), and the portions of the file that it loads depends on several factors including your preferences, the data last or most commonly accessed (such as lists) and have other data you ‘rights to’ (if security protocols are in force).
As you start to perform specific tasks in QuickBooks, your computer’s processor begins to access data from the memory based upon instructions from the QuickBooks database server. If the processor can’t find the data in cache memory the database server identifies the information for the processor, which then tells the operating system (Windows) to go find the information on your computer’s disk drive, and to write that newly queried data into ‘cache’ (memory). Normally, when a page of data has been ‘filled’ and a ‘checkpoint occurs’ the page should be put-away (written back to the data on disk). Also if allocated cache memory has reached the limits set by the memory manager, some of the data in cache memory should be written back to the computer’s disk drive before additional data from the disk drive can be written to cache.
But when memory leaks occur this process does not work right, data may ‘stick’ in memory and more and more data is amassed in short-term memory because the memory management function is failing to perform as it should.
I know all of this seems highly technical and it is, so I am going to try to simplify it in such a way that everyone reading this article can understand these concepts. So while the example I give may not seem similar at all, bear with me.
Are you starting to get the idea? With a memory leak your computer program keeps running and running consuming more and more memory, it’s not shutting off, and the longer that it runs, the worse things get. If you had put a rock on the gas pedal of the car so that the engine revved, the performance would no be even worse; gas would be used even faster because of the demand of the speeding engine, still the car went nowhere. Back in your computer the more demand placed on the computer with a memory leak, the worse performance for all the demands becomes; bigger applications or databases, and/or more users in the system, all draining performance until finally the computer begins to sputter and if something doesn’t give it dies….’the memory tank is empty’ (no more free memory to do anything).
Now if the source of the ‘memory leak’ is the QuickBooks application’s memory manager function and its’ control over the QuickBooks Database Server, what do you think is going to happen? That’s right, over time the performance of QuickBooks will get worse and worse, the bigger the jobs you call, the worse things get, the more people who log-in under multi-user, the slower and slower QuickBooks works. The database server thinks data has been written back to disk, but in reality it is still in memory, it just doesn’t know where to find it.
I am trying to simplify here; after all I am not writing this article for Computer Application or Database Programmers, but at the same time I want you to have enough facts so that you can recognize these symptoms and perhaps the potential cause. Now as I addressed earlier there are a lot of other problems, programmatic, hardware, infrastructure, etc. that can produce similar circumstances, but in the presence of both historical and reported 'memory leaks', the cause may lie in QuickBooks having consumed ever last drop of gas.......(oops, I mean "memory").