More Related Content
PDF
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」 PDF
PDF
OpenJDK トラブルシューティング #javacasual PDF
Javaはどのように動くのか~スライドでわかるJVMの仕組み ODP
PDF
PPTX
Tomcatの実装から学ぶクラスローダリーク #渋谷Java PDF
What's hot
PPTX
java.lang.OutOfMemoryError #渋谷java PDF
PDF
Javascriptのあれやこれやをまとめて説明してみる PDF
PPTX
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる PDF
PDF
PDF
PDF
Java開発の強力な相棒として今すぐ使えるGroovy PDF
PDF
JavaScriptユーティリティライブラリの紹介 PDF
Java EEを補完する仕様 MicroProfile PDF
PDF
PDF
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4 PDF
PDF
Kink: プロトタイプベースの俺々 JVM 言語 PDF
第三回ありえる社内勉強会 「いわががのLombok」 PDF
ClassLoader Leak Patterns PDF
Viewers also liked
PPT
PPTX
JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド PDF
Java素人がeclipseプラグインを作るためにやったこと PDF
PDF
Docker and jvm. A good idea? PDF
脱Java初心者を目指すときに読むといいと思う本を考える会 PPT
PDF
PDF
PPTX
Spring bootで学ぶ初めてのwebアプリ開発 PPTX
PPTX
PPTX
PDF
PDF
Similar to JVMの中身を可視化してみた
PDF
InvokeDynamic at #shikadriven 2012 PDF
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料) PDF
PDF
PDF
DoActionからJava VMバイトコードに変換する話 PDF
PPTX
Jjug night seminar201208_lt_cxxからjvm起動 PDF
PDF
PDF
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall PPTX
PDF
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ- KEY
関ジャバ JavaOne Tokyo 2012報告会 PDF
Var handles jjug_ccc_spring_2018 PDF
Javaセキュアコーディングセミナー東京第3回講義 PPTX
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo) PDF
Dalvikバイトコードリファレンスの読み方 改訂版 PPTX
PDF
PDF
JVMの中身を可視化してみた
- 1.
- 2.
whoami
● Java, JavaScriptなどを扱う研究開発者
● ウェブアプリケーションを再起動するたびに使える
ヒープが減る現象を追ったのがJVMとの出会い
●
シングルトンだけど、シングルトンじゃなかった!
● 持ちネタ
● jps, jstack, jmap, javap, JProfiler, VisualVM
● ASM, PMD, GAE/J, @twistoire, @partakein
● java.lang.instrumentとMBeanで低速SQL解析
2
- 3.
- 4.
- 5.
A Java VirtualMachine (JVM) is a
virtual machine capable of executing
Java bytecode.
– Wikipedia
5
- 6.
- 7.
- 8.
- 9.
- 10.
とりあえず
バイトコード
ランタイムコンスタントプール
オペランドスタック
ローカル変数
→ #jvmjvm
10
- 11.
- 12.
- 13.
ランタイムコンスタントプール
$ javap -verboseInteger
Compiled from "Integer.java"
// 中略
Constant pool:
const #1 = int -2147483648;
const #2 = int -2147483647;
const #3 = int 52429;
const #4 = int 65536;
const #5 = String #30;
// greater than Character.MAX_RADIX 13
- 14.
フレーム
● オペランドスタック
●
演算に使用するデータを溜めておくスタック
● ローカル変数
● ローカル変数を記録する配列のようなもの
● thisやメソッド引数もここで扱う
● その他
→Stack on JavaVM 14
- 15.
わかった、ような……
● 個々の役割はわかるが、どう協調動作するのかイ
メージしにくい
● classファイルに定数とバイトコードが書いてあるらしい
●
バイトコードをどうやって実行するのか?
●
ローカル変数やオペランドスタックはどう使われるの
か?
● 実際のコードがどう動くのか試してみたい
15
- 16.
- 17.