4 ms·
I can't emphasize how easy it is to extract JVM runtime information and how useful that information is for performance tuning. Sure the JVM uses a bigger initi
by sdesol 13y ago
I can't emphasize how easy it is to extract JVM runtime information and how useful that information is for performance tuning. Sure the JVM uses a bigger initial footprint when compared to a natively compiled application, but the ability to see how it's working is invaluable.
My program is RAM hungry...ish, but with its easily accessible garbage collection (GC) information, I can really get the most out of a 512MB VPS. Just have the GC logs written to RAM disk and have it rotate and you'll be amazed at what kind of useful stats you can generate.
You can see how I'm using it here:
http://screenshots.gitsense.com/jvm-monitoring.html http://screenshots.gitsense.com/jvm-monitoring.html
The 10 minute ratio stat lets me know how much time was spent doing garbage collection within the last 10 minutes.
- pron 13y ago... and VisualVM, and Flight Recorder + Java Mission Control, and BTrace/Byteman... the list goes on and on. If you need to, you can print out the assembly code generated by the JIT at runtime, modify your code on the fly, and see how the assembly changes. Erlang's BEAM VM has some of these capabilities, but not the JVM's performance. Other runtimes are decades behind.
- pjmlp 13y ago> Other runtimes are decades behind. To be fair, .NET also offers a similar level of support. The only difference is that you have to pay for it, by getting Visual Studio Premium or third party tooling like dotTrace which plug into the CLR monitoring API. For many people, the fact that they get such tools without paying a dime is a selling point for the JVM vs .NET.
- pron 13y agoYes, .NET is excellent, too. But it's Windows only.
- pjmlp 13y agoMany of us don't have a problem with it. :) On my type of work, the tools are chosen by the customers, not me. So usually .NET in Windows only shops, JVM languages in heterogeneous shops, and a little sprinkle of C++ via JNI/Interop if really required.
- hatchoo 13y agoI am curious, what type of app do you have running on the 512MB VPS? I use Java in my day job but I am considering using Python for a side project primarily because of a JVM-based app higher memory requirement.
- sdesol 13y agoIt's a software that I'll be releasing soon: http://beta.gitsense.com/index-dev.html http://beta.gitsense.com/index-dev.html Note the test drive feature isn't working yet. I'm hoping to have this working in a couple of days. The try it now feature should be working and for that I create a 512MB digital ocean VPS instance for each trial request. It's important to note my software doesn't use any web framework ... other than what I have built myself. This is probably one of the reasons why my program has a smaller memory requirement. Everything is pretty much one layer above the servlet/rest layer. And the only time my program becomes memory hungry is when I do the initial indexing but once that's done, 512MB is more than enough to keep it happy. If you know Java, I would personally use it for your side project since python will be unable to match it performance wise. Edit: I also forgot to mention that my product uses 3 JVMs. One for the webserver, one for my worker process, and one for the indexer.