You haven't to have a deep understanding of the JVM's implementations to do non-trivial or even very complex applications in Java. You need that knowledge to solve problems.
And that is one of the problems of high-level languages: you can start knowing next to nothing. And go a long way too. But when you stumble upon a brick wall of a problem, you must go back and learn the basics.
You cannot run it in production at all. No product owner will tolerate such overhead. And if you cannot run it in production long enough, then how and when will you find your memory leak?
Profilers will not show you any back references. Memory dump analyzers will do. The point of that blog post was to show that profiler alone will not help you. You need that memory dump and back references and dominators etc.