Would like to explain the some of the factors that decide how much maximum memory that an application needs.
Here are two examples. One is with cffile upload action and the other is with cfpdf thumbnail action.
Sometimes, while uploading large files using cffile with upload action (<CFFILE ACTION= "UPLOAD") you would have run into the following error
"500 - Internal server error.
There is a problem with the resource you are looking for, and it cannot be displayed."
File upload is dependent on “Maximum size of post data” value that you can set in ColdFusion Administrator.
However, it can’t exceed the total available free memory.
Say, if 512 MB is the Xmx memory value (jvm.config) and 350 MB is already occupied by the application, even if “Maximum size of post data” value is set to 200 MB, it can upload files of up to ~150 MB (512 MB- 350 MB).
It can’t upload files of size 200 MB.
To fix it, Xmx should be increased which is again subjected to the available memory in that machine.
Here is other example:-
Say, you are using CFPDF's Thumbnail Action and the
thumbnails background is not generated properly.
Here the issue would be insufficient memory.
Just to hold the decoded image data, java application needs large memory (say 1.2 GB depending on the image pixels).
It is because of the format and high pixel nature of the image that is being converted. Number objects created are equal to the total number of pixels in that image.
So, high pixel imge would consume more memory.
To fix this, Xmx value in jvm.config should be at least
-> Applications memory Size + 1.2 GB (from the above example) i.e.
a minimum of 1.5 GB and can be more depending on your application.
Changing the value and restarting the server would fix this.