Good luck with that one, I have been fighting this "memory" fight with AdGuardHome for a while. The simple fact is, it is not designed, nor is it optimized with the memory sizes of our routers taken into consideration. This is solely a design limitation. In order to "truely" run Adguardhome comfortably on our routers, they would need a minimum of 2gb of ram. Other wise, you have to go bare minimum in the "other scripts and processes" department. Also, you may want to still consider a reasonable size swap. I don't see nothing wrong with a swap being "reasonably" used if it does not lead to the router crashing. That is its true purpose. AdGuardHome developers are trying to reduce this memory issue by changing the way it downloads the list. Instead of doing it in "parallel", they are looking at doing lists sequentially. This means one list has to complete, before for the other one downloads. This "may" reduce the amount of memory AdGuardHome takes hold of at the expense of having to wait for each list to individually download.
@balr0g Another thing Adguardhome developers have done is made it to where you can specify "localized" lists instead of the generic ones they provide. What this means is you would be responsible for downloading the lists and maintaining them locally separate from adguardhome. This will reduce the "memory" strain because AdGuardHome will not do the list fetching itself.