Skip to content
0:00 / 0:00

#jvm#cliffclick#garbagecollection

A JVM Does That?

Google TechTalks

349K subscribers • 56 videos on Hallway

YouTube
  • Recommended by 4 people: 4 on Hacker News.
  • A classic. People kept recommending it from 2013 to 2017.
  • Presented by Cliff Click, JVM Architect

Advanced. Deep dive for people who know the field.

80K views15 years ago4 recommendations

Systems programmingProgramming languagesJava and the JVMCompilers and interpretersPerformance and optimization

Cliff Click explains the complex illusions a JVM maintains, including JIT compilation, dynamic class loading, deoptimization, and garbage collection.

Google Tech Talk (more info below) March 29, 2011 Presented by Cliff Click, Azul Systems. ABSTRACT Just what the heck is a JVM *supposed* to do? JVMs already provide a host of services. The 'J' part definitely slants the service selection and the 'V' part means that underneath the illusion there's a lot of really cruddy stuff. The success of these illusions has led to the real popularity of JVMs. In particular, JVMs are probably the most popular way to distribute ready-to-use GC technology to the masses, and the 2nd most popular way to distribute ready-to-use compilation technology (just behind "gcc" I'm guessing). Just what are these illusions? The illusion that bytecodes are fast and have a reasonable cost model : (machine code generation, profiling, JIT'ing). The illusion that you can quickly change the program at any time (dynamic class loading, deoptimization, re-JIT'ing). The illusion of infinite memory (Garbage Collection). The illusion of a consistent threading and memory model (the JMM, volatiles, locks). The illusion of quick time access (i.e. Intel's "rdtsc" is mostly useless for time). The illusion that these other illusions all work on all sorts of machines from cell phones to 1000-cpu mainframes (it's kinda sorta mostly true). But these are not enough! The People cry out for more illusions! The illusion of an Infinite Stack (tail recursion), the illusion that running-code-is-data (closures), the illusion that Integers are as cheap as 'ints' (autoboxing optimizations), or that BigIntegers are as cheap as 'ints' (tagged ints), the illusion that memory supports atomic update (software transactional memory), or the illusion that with enough hard work other language implementation experts can make a JVM run utterly different languages (invokedynamic). Meanwhile, JVM engineers labor under the illusion that they can maintain this giant piggy pile of code, and maybe even expand the provided services without it collapsing under it's own weight. Here's my take on what services could & should be provided by a JVM, what services probably belong to the next layer up (STMs, new concurrency models), and what services belong to the next layer down (fast time management, sane thread scheduling).

Why it's here

4 people recommend this

What people say. Highly recommended for its deep dive into JVM internals, compilers, and runtime performance by a leading expert.

x0x0on Hacker News • Recommends

On “Ask HN: What's your favorite tech talk?”

Cliff Click was the jvm architect at sun then spent a decade at azul systems as their jvm architect. The talk is "A JVM Does That?" It's well worth watching if you are interested in vms at all. link to this video

qzncon Hacker News • Recommends

On “Ask HN: What's the best technical talk you've heard?”

Probably this one: link Anything from Cliff Click is quite good. This guy has a very deep understanding of compilers, virtual-machines, CPUs, and their interactions. A JVM does that? link to this video Java on a 1000 Cores link

Alupison Hacker News • Recommends

On “Peter Lawrey Describes Petabyte JVMs”

There are some interesting challenging when scaling this large with any system. Peter referenced some of Azul System's stuff and their custom GC. Cliff Click from Azul has done some great Google Tech Talks about JVM development and scaling JVM's out to really big systems.12 1 A JVM Does That? - link to this video 2 Java on a 1000 Cores - link

btraskon Hacker News • Recommends

On “Linux futex_wait() bug – update to latest patches now”

I'm not part of the Java world at all, but I'm starting to think that Azul Systems is one of the few groups of people who know what they're doing with regard to Linux performance and the user/kernel boundary. I recently watched some talks by Cliff Click1 that were extremely informative, and from what I understand about their proposed kernel patches, they seem like important improvements. This report by Gil Tene (their CTO according to Wikipedia) lends more support to that theory. 1 link to this video

qzncon Hacker News • Recommends

On “The “high-level CPU” challenge (2008)”

There is a fascinating talk by Cliff Click "A JVM Does That?" At the end he shares some opinion about what should be done by JVM or OS and what should change. video: link to this video slides: link I remember a talk, where he was also talking about hardware. It does not seem to be this one. For example, a time register would be useful. Syscalls like clock_gettime are too slow. CPU info like cycle counts fail with dynamic frequency scaling.

skorguon Hacker News • Mentions

On “Linus Torvalds on Garbage Collection (2002)”

IBM's Metronome1 advertises maximum pause times in the hundreds of micro seconds range. Cliff Click2 cites a 10MB max heap for it so definitely not a cure-all but definitely something I'd like to play around with. 1 link 2 link to this video

pronon Hacker News • Mentions

On “JVM Internals (2013)”

Well, LLVM is something else altogether, as it doesn't try to abstract away the OS, while the JVM does1. As to the JVM, well, first of all, there is no "the JVM". There are many JVMs by many vendors, and many types of JVMs (from smart-cards, through various embedded devices, and all the way to desktops, servers and mainframes). Some of the most interesting -- and most important -- ones are made by companies you've probably never heard of, like Aicas and Atego that make hard realtime JVMs for use in avionics, medical devices and other safety-critical systems. The best-known JVMs are HotSpot, OpenJDK's JVM (which serves as the basis for Oracle and Azul's JVMs) and J9, IBM's JVM. When many pe…

xxson Hacker News • Mentions

On “Chris Lattner on Swift and dynamic dispatch”

…virtual calls are back to being slow ---- There are several misconception about Java in the write-up. The real reason there won't be a bootloader is the need for the Java runtime and the need to GC. Unoptimized virtual calls won't affect any bootloader for that matter (and you can/should use static and/or private methods for the inner loops) 0: link to this video…