tweakable : Java Glossary


aka free parameter. A static final constant that may be safely varied between limits. The program still behaves the same way, no matter what the value, but it may run faster at the optimum setting. Tweakables include such things as ideal buffer sizes, maximum number of threads to spawn (size of a thread pool), best initial sizes for various Hashtables and ArrayLists, how frequently to invoke the garbage collector and even the size of the virtual heap. Tweakables can also be discrete variables that for example may select between one of seven different sorting algorithms, or between a CPU (Central Processing Unit) intensive vs a RAM (Random Access Memory) intensive algorithm.

I envision a time when automated optimisation process will monitor your program every time it runs in production, automatically adjusting the tweaking parameters until it gradually learns and homes in on the optimal settings for running under various conditions using some sort of statistical multiple regression analysis and binary search, working somewhat like a numerical differential equation solver.

The problem is the optimum settings are not universal. They depend on the customer’s hardware, JVM (Java Virtual Machine) and data size and characteristics, e. g. one customer may always present data pre-sorted, or sorted in precisely reverse order. Different customers use different SQL (Standard Query Language) engines and different Servlet wombs.

Tweakables could be external to the Java program such as the optimum VM heap size or stack allocation. Too little and you GC (Garbage Collection) needlessly frequently, too big and your virtual RAM fills with paged out deadwood interspersed with tiny objects.

This page is posted
on the web at:

Optional Replicator mirror
on local hard disk J:

Canadian Mind Products
Please the feedback from other visitors, or your own feedback about the site.
Contact Roedy. Please feel free to link to this page without explicit permission.

Your face IP:[]
You are visitor number