2 ms·
I'm not super familiar with the JVM, so correct me if I'm wrong on that front, but I think the distinction is that Python provides those kinds of introspection
by hansvm 6y ago
I'm not super familiar with the JVM, so correct me if I'm wrong on that front, but I think the distinction is that Python provides those kinds of introspection tools in the same language, not just the runtime platform, so it can be easier on tool writers and _much_ easier for individuals who only need to peek into a few of the internals as a small component of some other project.
- taeric 6y agoThe profiling tools on the jvm are quite good. Easily comparable to what was presented in this article. I can see some benefit to the idea that you can get a repl looking at the results, though, again, I imagine any runtime based language could give this. (I said interpreter based last time, but it is the runtime that is important, I think.) That said, I have not seen this done with lisp. I would assume it would look a lot like this.
- rtpg 6y agoHey, I wrote the original post. Though theoretically any interpreted language gives you all of this, you actually might not have access to the internals in practice. JS (well, node.js and browsers) doesn’t expose GC internals (partly due to a spec requirement that the language be deterministic), and barely gives you good exception introspection. There is also the ergonomic advantage of no static typing: you just get a reference and can figure out the type later. Very useful when poking around unknown objects. I imagine an API like this in Java would be much more verbose and requiring a lot of casts etc.
- taeric 6y agoHaving taken a dive on some memory issues with Java, the tools that you have at your disposal are quite nice, actually. https://www.yourkit.com/java/profiler/features/ https://www.yourkit.com/java/profiler/features/ shows roughly what the memory charts look like. So, yeah, if your want is to inspect using the host language, I can see how this makes sense. That said, as you noted in the post, you really just want to get to the root asap. Which is why most visualizations will start from there. :D