I am lucky enough to have a very generous uncle and aunt, who recently wanted to buy me a new computer. In our conversation we talked a little bit about what kind of hardware requirements I had, and they were a bit confused when I told them that 8 Gigabytes of RAM was more then enough for my needs. My uncle, a Windows user I might add, claimed that he needed a workstation with a least 32 Gigabytes of RAM, since he needed to have many windows open at the same time across multiple screens. These windows ran applications like web browsers, PDF readers and documents being edited. Now in my workflow, I too run many windows open at the same time across multiple screens, including web browsers, PDF readers and documents being edited, but I seldom exceed a hundredth of that amount of memory. It got me thinking.
How much memory do various applications really use, and is it possible to save substantial computer resources by just changing a handful of application habits? Of course personal tastes and work requirements vary, so it's impossible to make any definitive guide, but the following is a list of general recommendations. If you drop the AVOID applications mentioned here, you will likely not use even 1 GB of RAM under a heavy workload, and if you adopt the RECOMMEND'ed ones, you will likely use under half a GB under heavy workloads.
Now you may be thinking, why? I have 8 Gigabytes of RAM, so why would I want to use 1, wouldn't it be a waste to have 7 GB unused? Well, no. That's a bit like saying that unspent money in the bank is wasted. It is actually very wise to modesty spend less then your income, not only do you save up for a rainy day, but it significantly reduces economic stress. Making a habit of using less memory will also make hardware specs largely irrelevant, you can be productive in front of any and all computers, even throw-away laptops that nobody wants. Also, having the extra memory does not hurt in situations where you need to do heavy lifting, compiling software or running virtual machines for instance. There are many other benefits as well, running lightweight applications means that you have a very snappy system. Light programs also have light manuals, and its significantly easier to debug them and send a patch upstream. All in all, simple programs simplify your life. So, without further adieu, here is the RAM dietary program:
Seriously, why on earth would you use Windows..? There are literally thousands of better alternatives out there, pick one.
Now, I know this is hard, but changing your gaming habits may be the single most important step in reducing memory requirements.
This is not a joke. Not only is it possible to do professional programming using the basic UNIX tools, but it is arguably not possible to do it otherwise. Using bloated IDE's is a sure way to generate bloated code beyond your understanding. Keep things simple, for your own benefit, as well as others!
One challenge in making the switch from a big desktop to a standalone window manager, is that you do not get a host of desktop utility programs, and often there are no good alternative lightweight GUI applications available. You can almost always do what you need though in a humble terminal, with just a little bit of know how, see Desktop chores in the Terminal below.
As with the web browsing category above; there are no "light" VOIP solutions. The only way to save computer resources here, is to communicate by alternative means. If you have to use VOIP, use dedicated software (eg. zoom or skype), not a browser solution (eg. Goodle Meet).
You can often do casual chores in the shell with simple conventions. For example, do you need a todo list? Just write one in vi. Need to mark the calendar? Just cal > calendar, and edit this file in vi. Need a phone book with contact information? Just write it in vi and grep for the name you want. Need a password manager? Just write your passwords in vi, encrypt it with gpg2 --symmetric, to search the database gpg2 --decrypt | grep it. Need to quickly jot down a sentence, and have the computer remind you of it later? Just add these two lines to your ~/.bashrc file:
alias note='echo "$@" >> $HOME/.notes' if [ -f $HOME/.notes ]; then cat $HOME/.notes; fi
You can now jot down a quick reminder with note remember to buy milk!, and you will be reminded of this whenever you login to your machine, until you delete the note (eg. rm ~/.notes). There are no icons or start menus in the terminal, but as the above example show, it is very easy to create your own commands (or "launchers" if you will). Creating menus is also quite possible if you want to, look up the select command in your shell's manual for instance. I am sure you can think of many useful conventions that are better honed to your own idiosyncrasies :^)
It is possible to go even lighter, by dropping X all together and do your work in the text console, or TTY. In terms of memory usage, there isn't really much difference between various Linux distros and BSD variants at the desktop, but on bare TTY you can really notice it! A heavy workload with dozens of text and curses applications on a BSD TTY session, will hardly use even 100 Mb of RAM. And you can go even lighter then that: A heavy workload in Plan 9 or KolibriOS* will use about 50 Mb of RAM**, despite being graphical desktops! Now, these are very obscure operating systems, and I do not generally recommend then as a daily driver. But it is fun to know that a graphical desktop with many windows open, running web browsers, PDF readers and documents being edited, is quite possible using only 32 Mb of RAM, next time you hear a Windows user complain that 32 Gb doesn't quite cut it...
*) Many who see the colorful KolibriOS Desktop using few Megabytes of RAM, will assume that assembly programming must be amazingly efficient. That conclusion is wrong. There are alternative operating systems written in higher level languages that can compete. The reason KolibriOS is so efficient, is not because it is written largely in assembly language, but because it is written from scratch. It avoids the truck loads of legacy junk that plague mainstream systems.
**) Well... not counting filesystem caching and internal kernel memory, but that is usually excluded when UNIX and others measures memory, so I feel it's only fair to doctor these numbers in a similar way.