First, I would like to say that getting the Pro version will not make everything better. If the free has an issue, the Pro will not fix it. It wouldn’t be fair for me to do that to my users. The Pro version adds interesting options, but it doesn’t mean it works better.
It happens mainly for two reasons:
It means your images might have been used somewhere you didn’t suspect. Look at all your images and find one that you are sure is not used anywhere on your website. Click on it in the Media Library. On the right, there is a little widget called Media Cleaner.
It will indicate to your something like: Seems to be used in a gallery, or Seems to be used in a post (and in that case, you will get a link to that post). Does this help you?
Make sure your options are set right. Have a look at your PHP Error Logs. Is there any error? Is it related to the plugin?
Then you might be using a page builder or a specific plugin dealing with images that it is not supported by Media Cleaner (WPML Media for example). Are you using one? Check the Compatibility part of the description of the plugin here. If it’s not on the list, please comment below, as other users might also join the discussion and ask for this feature.
There is the last check you can do by yourself. Enable the Logs option in the plugin settings. Run the scan. At the end, a file will be created with debugging information about the latest scan. Under the Logs option, a link to the log file will be added when this file exists. You can open it, and have a look. In the first section of it, you will find the different media IDs and URLs referenced and grouped. In the second section (Checking Media…), the result of the analysis on each media. This second section looks like this:
Basically, the ID or the URL of each media are being matched against the first section.
If nothing helps, and you still think that there is something wrong with Media Cleaner, please contact me. You will need to give me an example of a Media that is wrongly marked as not used. Please also show me how it is used (Post ID, URL, etc…). Access to your website might be needed for me to find the issue.
The latest versions of the plugin are much much, much faster and don’t timeout anymore, even on big installs. That is because most of the work is done during the posts’s analysis, and results stored in the cache. There are no redundant checks. This cache is stored in the database, as transients (WordPress feature). There is a reason: if anything wrong happens, of if the plugin is uninstalled, one week later those transients will be automatically cleared by WordPress. That way, everything is always clean.
Now, why is it using too much memory? That’s because the plugin needs to load the cached data, and update it with more data. This could be implemented a bit differently (by creating another table in the database only for this cache) but right now this problem is encountered by less than 1% of the users, and the implementation of this would affect too many of my users, without counting that I prefer to focus on making the plugin detection/analysis perfect before working on this issue.
Solutions would be to: disable all the plugins and re-run the scan (other plugins take also a lot of memory), increase the memory limit, or avoid to check all the options for the Media Cleaner (you probably don’t need all of them depending on what you are checking).