Depending on the aims, a team can compromise when implementing microservices.
For example, when robustness is the goal of introducing microservices, the microservices have to be implemented as separate Docker containers.
Each Docker container can crash without affecting the other ones.
If robustness does not matter, other alternatives can be considered. For example, multiple microservices can run together as Java web applications in one Java application server. In this case, they all run in one process and therefore are not isolated in respect to robustness. Still they are independently deployable.
A memory leak in any of the microservices will cause them all to fail.
However, such a solution is easier to operate and therefore might be the better trade-off in the end
https://martinfowler.com/articles/microservice-trade-offs.html