6 ms·
Wow! Amazing find. This is an amazingly well organized, detailed, useful resources. It might be worth adding (2013) or JDK7 to the title. Off the top of my hea
by kjeetgill 8y ago
Wow! Amazing find. This is an amazingly well organized, detailed, useful resources.
It might be worth adding (2013) or JDK7 to the title. Off the top of my head the details about the permgen don't apply anymore and I believe this predates G1.
- pjmlp 8y agoAnd in any case very specific to one JVM implementation, while there is a plethora of them around. https://en.wikipedia.org/wiki/List_of_Java_virtual_machines#Active https://en.wikipedia.org/wiki/List_of_Java_virtual_machines#... https://en.wikipedia.org/wiki/List_of_Java_virtual_machines#Active_2 https://en.wikipedia.org/wiki/List_of_Java_virtual_machines#...
- pvg 8y agoMost of it is generic enough to be applicable to anything that calls itself a JVM since it's required by spec. For instance, everything bytecodes, what a class file looks like, how dynamic linking works, etc.
- pjmlp 8y agoAnyone that has had to track down issues between Sun(Oracle) and IBM caused by GC or JIT differences, will have a different opinion. I surely have been there a few times.
- pvg 8y agoWhy would you have a different opinion? This post is almost entirely not about stuff like that. If anything, the other linked thing in this thread 'JVM Anatomy' and this post should meet somewhere and agree to swap titles.
- pjmlp 8y agoBecause those things are left unspecified and they matter specially under heavy load. A JEE server might scale differently depending under which JVM it is running. The GC algorithm chosen by the implementation might lead to higher pauses in another JVM. The beautiful auto-vectorized code in one JVM might run like molasses in another JVM. One JVM might lack tiered compilation, thus increasing the saw shape pauses when it comes to JIT a specific method. Finally, the spec doesn't state how threads are executed, so they can be implemented as green or red threads, and certainly the code won't run the same way.
- bitcharmer 8y agoIt's true, but in practice Oracle's Hotspot is used in overwhelming majority of deployments you will get to work on.
- pjmlp 8y agoNot when you work with corporations that love Websphere, embedded deployments or that little fork known as Android.
- jxub 8y agoI recently attended a talk with Simon Ritter from Azul Systems that is developing Zing VM, and this VM is apparently gaining adoption among financial companies thanks to improved startup time and novel GC algorithms. Anyone with first hand production experience?
- cmclaughlin 8y agoWe use it at my job for our main api which needs lots of memory. I’m on the devops side and I don’t get into it much past the deployment of the app, so from my side it’s more of a hassle than openjdk since we have to deal with licensing.
- yazr 8y agoYes. Used in production HFT system. Works as advertised. But you should try the new J8 GC algos before you try a whole new VM
- bitmapbrother 8y agoAndroid is not a fork of the JVM as it doesn't use the JVM. You seem to keep on parroting this fallacy.
- pjmlp 8y agoAndroid started by copying Apache Harmony, as means of Google trying to avoid to pay Sun their rightful licenses, as confirmed by Andy Rubin emails. Thanks to that, Sun lost what might have rescued from insolvency. Which Google, while thinking that they finally got rid of Sun did not bothered to try to save. After the lawsuit and IBM's move to sponsor OpenJDK, Google was forced to migrate to OpenJDK. Yet Android does not use 100% of OpenJDK, rather they are adding little pieces of it in each Android version. Thus Android uses a forked version of OpenJDK, with everything that Google doesn't care removed from it. The fact that they use ART is an implementation detail, some Java certified JVMs for embeded deployment also have tooling to convert to their optimized implementation instead of using .class files. Rest assured, I am quite good parroting.
- hyperpape 8y agoI'm well aware that my knowledge of the JVM is almost exclusively about the Hotspot lineage, and a bit about Zing, which shares a lot of DNA, and I'd like to know more about the alternatives, but either I'm looking in the wrong places, or there's simply much less accessible information out there. My thought is that it would be better to spread information about the alternate implementations rather than exclusively complain about the misidentification.
- pjmlp 8y agoSorry for being pedantic, I just think mixing JVM with Hotspot is a bit like thinking GCC dictates what C is all about. Both are actually quite common misconceptions.
- rzzzt 8y agoPermgen evolved into the metaspace: https://dzone.com/articles/java-8-permgen-metaspace https://dzone.com/articles/java-8-permgen-metaspace
- jxub 8y agoAnd here's an Oracle blog post about it: https://blogs.oracle.com/poonam/entry/about_g1_garbage_collector_permanent https://blogs.oracle.com/poonam/entry/about_g1_garbage_colle...