A Note on Memory Usage

Since the program was designed to evaluate general dynamical systems we sacrifice speed for generality. On the other hand, we do not want to have to reevaluate the entire system when we are simply changing the color scheme. This is why we built in a recoloring feature that simply changes the coloring of the image and does not reevaluate the system. To do this, we need to calculate and store all of the coloring information for each pixel when the system is rendered. This does add some time to the render, but it is not significant. What it does do is make the amount of stored information for an image quite large. Each pixel on the screen needs to store between 40 bytes and 172 bytes of information. When graphing a 2560 X 1600 image this requires 672 MB of memory, and if one were to use a custom size of 4000 X 3000 the image would require nearly 2 GB of memory. So, using large custom sizes can easily produce out-of-memory errors when running this program. This is usually the case when the program becomes non-responsive. If you intend to produce large images it is advisable to make a quick calculation of the needed memory (assuming about 200 bytes per pixel) and run the program with at least that amount of allocated memory. This can be done by command-line running the jar file using the -Xms Java argument, for example

java -Xms4g -jar FractalGenerator.jar

will allocate 4 GB of memory for the program, enough for rendering a 4000 X 3000 pixel image.