Winamp’s Growing Memory Usage & Perceived Feature Bloat

Both excessive memory usage and feature bloat is something that has been attributed to Winamp a lot over the years from those that either prefer Winamp 2.x or prefer other players. It’s been more of an issue since Winamp 5.x came out such as due to the shift from the simple classic skin to the modern skins as the default skin on installation or from new features being added over the years (often from user requests I’ll note).

Due to both of these factors, Winamp has sadly lost in many people’s views the lightweight nature that was associated with it during it’s early days until the later 2.x releases. Though once the media library (which was often requested) appeared in v2.9x then things started to change in perceptions and is why it was started to be seen those who will never use anything beyond v2.81 and to an extent the v2.9x releases due to Winamp suddenly using a lot more memory and becoming bloated in their opinion.

Firstly, lets address the easiest of the two and that’s feature bloat which is software features (e.g. auto-tagging functionality) that are either not wanted by one or more users (the wikipedia article I’ve linked to is a good read if you want to know more about the topic.

There is always a tricky balancing act as there will be those wanting and will actively use new features and others who couldn’t care less, view it’s development as a waste of time (especially if it means their super wonderful feature doesn’t get implemented) and so it gets called bloat. So one person’s bloat is another’s ultimate feature and vice versa.

Thankfully Winamp is primarily a plug-in based program and so features that are deemed as bloat can either be not installed (unless you blindly just click next during the install process - which happens all too often and then complaints are made about it) or can be unchecked / removed post-install (e.g. via the plug-in preferences - which with the later v5.x releases would fully remove the feature and all of the supporting dlls related to it).

So Winamp has the means either during install or later on to allow the user to remove / disable the feature bloat as needed for their way of wanting to use Winamp. There’s even been guides about doing this such as the Like the Wind article that was created over a decade ago and for which the basics are the same with the current Winamp release.

The trickier issue is memory usage. So lets see what causes it to grow and what, if anything, can be done about reducing it as we ideally want to see no memory usage yes?

Winamp’s memory usage (as with any program) is made up of the code that is loaded from the program file and plug-in files that make up Winamp. There’s then also the skin and text and artwork resources, the main playlist editor, file caches (e.g. to help speed up getting information from an MP3’s tag without having to re-load the file everytime), the library and all of the data it contains and so on.

So depending on what has been installed, how many files are present in the media library, even how long you’ve been tracking your played song history, the memory usage which is seen for a Winamp install is going to be different between everyone as all of the above uses memory. This is why for some it is still very low (e.g. they don’t use or have a large library and only play a few files at a time using a classic skin) whereas for others it easily runs into 100MB’s due to having 10,000s or even 100,000s of songs in their library and all the data that goes with that.

But what can be done about reducing it so it’s like it used to be in v2.x or even earlier ? For some aspects then there’s really not a lot that can be done other than not installing or disabling features that are not needed and the code needed for them not being loaded into memory when Winamp is running (which depending upon the feature may save a few MB at the very most as the OS can help to reduce what is loaded into memory until it is actually needed).

There are other things like changing the skin being used as modern skins due to how they work will use more memory due to having higher quality images and due to their interactive nature meaning that they’re effectively like a little program within a program and as we’ve noted above, that means memory will be used to allow them to work. So for this, the only real solution is to use a classic skin or accept that a modern skin will use more memory and keep using the skin.

This then leaves the main perceived memory usage issue of the library and what to do about it. In most cases there’s really not a lot you can do as the library is there to cache the metadata and other information about the files added to it so that Winamp can run faster without needing to re-query the files for the information all of the time (with the processing and memory overheads that go with that).

So for an increased memory usage, you get a better user experience in not having to wait ages to view the information from the files stored in the library which would have to be read from the files all of the time if the information was not cached.

But I still don’t want it to use so much memory! Alas that is not possible unless how the library internally works is changed or you stop using the library and go back to a single all-in-one playlist and run everything from there and use workarounds to get a psuedo-library experience if you still want to have the library features.

However there is a possible solution…

If you’ve been following my other recent blog posts then you’ll have seen that I’ve been looking into whether it is possible to replace the existing library engine with a replacement that could be used to help reduce the memory usage the native version has.

This is because I’ve since found that the current library engine (which is basically the same as the old version that was released many years back) will often have two effective copies of the database in memory which for a large library means a lot of memory being unnecessarily used for no need.

So as part of my work looking into an in-place replacement of the native library engine, I’m looking into how the data duplication can be resolved and for any other memory optimisations that can be made whilst hopefully not affecting performance.

So in summary, what can we do about memory usage and feature bloat:
  • Feature bloat is subjective and one person’s essential feature is another’s bloat feature
  • Winamp is modular so you can not install or uninstall features not wanted
  • Memory has to be used to able to run code, play files, have a media library and so on
  • Not installing features not wanted can same some memory
  • Changing the skin (e.g. to a classic skin) can make a decent memory saving at the possible expense of usability and skin features
  • The library needs to use memory to provide the cache of the file metadata and the larger the library, the larger the memory usage will be
  • Try to make use of an alternative to the existing library which is less memory heavy (which at this time is something I’m looking into ;) )

So hopefully this has given some suggestions on what can be done to reduce some of Winamp’s memory usage (if that is an issue for you) but also explained why over time the memory usage has increased which in a lot of cases is down to greater usage of the media library and what is entailed by using it and not really due to new features being added to Winamp.