Microservices in Java — A Second Look
Elliot Forbes

Very good article. If you are also interested in comparing Docker container image sizes, as opposed to required runtime memory size, may I suggest looking at how to use the ”scratch” base image on your Go Dockerfile. The scratch base image can be used with statically linked Go exectuables, and it reduces the resulting container image to a bare minimum because, unlike the golang base image, there is no operating system in the container image, no Go tooling, and no other dependencies. Your resulting Go Docker image should be on the order of about 10 MB vs 100’s of MB.

This article has a good description: