If you are getting "Your system has run out of application memory" dialog boxes, and a list of most likely innocent apps listed, then here is the explanation.
For the record, there are 2 reasons for the "Your system has run out of application memory" dialog box.
A) Your boot disk has very low free storage, and macOS cannot create page/swap files to offload virtual memory contents to disk. This is generally not the case, but I mention because if you do have very low free storage, it might apply.
B) A process (or set of processes) have asked macOS for excessive amounts of virtual memory address space. Virtual memory address space requires macOS to create Virtual Memory Page Tables in the kernel address space to keep track of the application virtual addresses given out. Generally, if there is a memory leak (process asks for a virtual address range, uses the addresses, forgets to give them back, asks for another virtual address range, uses the addresses, wash, rinse, repeat), eventually there are so many virtual memory page table entries trying to keep track of the virtual addresses, that macOS no longer has memory available for applications, and you get the "Your system has run out of application memory".
If you look at Applications -> Utilties -> Activity Monitor -> View (menu) -> All Processes -> Memory (tab), you can see what processes are using lots of memory.
You can also issue the following command from Applications -> Utilities -> Terminal:
ps ax -o vsz,pid,comm | sort -n
which will display the virtual memory used sorted so the largest virtual memory consuming users are at the end. The virtual memory sizes are in 1024 byte units.
NOTE: I have seen situations where no single process is using all the memory, but rather a host of smaller processes are using up all the virtual memory. That is to say, a 100 instances of the same program all running with a moderate amount of memory eventually adds up to a lot of page table entries being used.
I have also seen users with 100's of web browser tabs open, where each tab is being managed by its own separate process. And just because you are not looking at any give tab, does not mean the Javascript running on that web page, is not taking up memory and virtual addresses.