You might well have a "memory leak" problem in some of those processes, and this would be indicated if the memory consumption of some process continued to enlarge while the nature of the work that they are doing is such that this sort of behavior would not be expected.
Since it can be difficult to track down these problems in production code, some systems are simply designed so that the processes "commit hari kiri" after a little while. They voluntarily terminate, and are immediately replaced. (Others take a similar approach: they exec themselves.)
Remember, also, that Linux does try to put "100% of available memory" to some good use. A common, lowest-priority use is "file buffers." Linux is completely lazy about cleaning-up such things, because there is no harm and possible benefit in letting them stay around as long as possible.
The situation won't change until, and unless, there is actual memory "pressure." Then, according to a well-established system of priorities, Linux begins taking-back memory ... up-to and including the dreaded "OOM Killer" (which starts shooting passengers and throwing them over the side to save the balloon).
|