Enviar búsqueda
Cargar
JVMの中身を可視化してみた
•
5 recomendaciones
•
6,146 vistas
Kengo Toda
Seguir
Denunciar
Compartir
Denunciar
Compartir
1 de 17
Descargar ahora
Descargar para leer sin conexión
Recomendados
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
y torazuka
Javaクラスファイルの読み方
Javaクラスファイルの読み方
y torazuka
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasual
Yuji Kubota
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
スレッドダンプの読み方
スレッドダンプの読み方
Funato Takashi
Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係
yy yank
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
Norito Agetsuma
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
Yuji Kubota
Recomendados
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
y torazuka
Javaクラスファイルの読み方
Javaクラスファイルの読み方
y torazuka
OpenJDK トラブルシューティング #javacasual
OpenJDK トラブルシューティング #javacasual
Yuji Kubota
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
スレッドダンプの読み方
スレッドダンプの読み方
Funato Takashi
Jvm言語とJava、切っても切れないその関係
Jvm言語とJava、切っても切れないその関係
yy yank
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
Tomcatの実装から学ぶクラスローダリーク #渋谷Java
Norito Agetsuma
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
Yuji Kubota
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷java
Yuji Kubota
JavaScript基礎勉強会
JavaScript基礎勉強会
大樹 小倉
Javascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみる
Shunji Konishi
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
Koichi Sakata
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目
大樹 小倉
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
Akira Shimosako
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015
Norito Agetsuma
JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介
Yusuke Hirao
Java EEを補完する仕様 MicroProfile
Java EEを補完する仕様 MicroProfile
Norito Agetsuma
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!
bitter_fox
JVM のいろはにほ #javajo
JVM のいろはにほ #javajo
Yuji Kubota
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
bitter_fox
覚醒!JavaScript
覚醒!JavaScript
Haraguchi Go
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
yoshiaki iwanaga
ClassLoader Leak Patterns
ClassLoader Leak Patterns
nekop
いまさら恥ずかしくてAsyncをawaitした
いまさら恥ずかしくてAsyncをawaitした
Kouji Matsui
Javaバイトコード入門
Javaバイトコード入門
Kota Mizushima
JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド
JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド
ToshiakiArai
Más contenido relacionado
La actualidad más candente
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷java
Yuji Kubota
JavaScript基礎勉強会
JavaScript基礎勉強会
大樹 小倉
Javascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみる
Shunji Konishi
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
Koichi Sakata
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目
大樹 小倉
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
Akira Shimosako
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Preferred Networks
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015
Norito Agetsuma
JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介
Yusuke Hirao
Java EEを補完する仕様 MicroProfile
Java EEを補完する仕様 MicroProfile
Norito Agetsuma
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!
bitter_fox
JVM のいろはにほ #javajo
JVM のいろはにほ #javajo
Yuji Kubota
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
bitter_fox
覚醒!JavaScript
覚醒!JavaScript
Haraguchi Go
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
yoshiaki iwanaga
ClassLoader Leak Patterns
ClassLoader Leak Patterns
nekop
いまさら恥ずかしくてAsyncをawaitした
いまさら恥ずかしくてAsyncをawaitした
Kouji Matsui
La actualidad más candente
(20)
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷java
JavaScript基礎勉強会
JavaScript基礎勉強会
Javascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみる
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
JJUG CCC 2017 Fall オレオレJVM言語を作ってみる
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
できる!並列・並行プログラミング
できる!並列・並行プログラミング
Java開発の強力な相棒として今すぐ使えるGroovy
Java開発の強力な相棒として今すぐ使えるGroovy
Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015
JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介
Java EEを補完する仕様 MicroProfile
Java EEを補完する仕様 MicroProfile
10のJava9で変わるJava8の嫌なとこ!
10のJava9で変わるJava8の嫌なとこ!
JVM のいろはにほ #javajo
JVM のいろはにほ #javajo
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
覚醒!JavaScript
覚醒!JavaScript
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
ClassLoader Leak Patterns
ClassLoader Leak Patterns
いまさら恥ずかしくてAsyncをawaitした
いまさら恥ずかしくてAsyncをawaitした
Destacado
Javaバイトコード入門
Javaバイトコード入門
Kota Mizushima
JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド
JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド
ToshiakiArai
Java素人がeclipseプラグインを作るためにやったこと
Java素人がeclipseプラグインを作るためにやったこと
TAKEMURA Takayuki
Stack on JavaVM
Stack on JavaVM
Yuichi Sakuraba
Docker and jvm. A good idea?
Docker and jvm. A good idea?
Christopher Batey
脱Java初心者を目指すときに読むといいと思う本を考える会
脱Java初心者を目指すときに読むといいと思う本を考える会
terahide
Java9新機能概要
Java9新機能概要
HonMarkHunt
ふりかえり
ふりかえり
terahide
明日に繋がるふり返りのプラクティス
明日に繋がるふり返りのプラクティス
terahide
Spring bootで学ぶ初めてのwebアプリ開発
Spring bootで学ぶ初めてのwebアプリ開発
terahide
要求開発を補完する現状分析
要求開発を補完する現状分析
Atsushi Takayasu
アジャイル勉強会 公開資料
アジャイル勉強会 公開資料
Atsushi Takayasu
進化するArt
進化するArt
Takuya Matsunaga
データモデルは時空を越える
データモデルは時空を越える
terahide
データベース設計徹底指南
データベース設計徹底指南
Mikiya Okuno
Destacado
(15)
Javaバイトコード入門
Javaバイトコード入門
JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド
JJUG CCC 2015 Spring 「新人エンジニア奮闘記 - Javaって何?からwebサービスを公開するまで -」発表スライド
Java素人がeclipseプラグインを作るためにやったこと
Java素人がeclipseプラグインを作るためにやったこと
Stack on JavaVM
Stack on JavaVM
Docker and jvm. A good idea?
Docker and jvm. A good idea?
脱Java初心者を目指すときに読むといいと思う本を考える会
脱Java初心者を目指すときに読むといいと思う本を考える会
Java9新機能概要
Java9新機能概要
ふりかえり
ふりかえり
明日に繋がるふり返りのプラクティス
明日に繋がるふり返りのプラクティス
Spring bootで学ぶ初めてのwebアプリ開発
Spring bootで学ぶ初めてのwebアプリ開発
要求開発を補完する現状分析
要求開発を補完する現状分析
アジャイル勉強会 公開資料
アジャイル勉強会 公開資料
進化するArt
進化するArt
データモデルは時空を越える
データモデルは時空を越える
データベース設計徹底指南
データベース設計徹底指南
Similar a JVMの中身を可視化してみた
Web技術勉強会 第31回
Web技術勉強会 第31回
龍一 田中
ななめ45°から見たJavaOne
ななめ45°から見たJavaOne
AdvancedTechNight
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
Javaに這いよる.NET
Javaに這いよる.NET
Hiroshi Maekawa
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Koichi Sakata
Play frameworkについて
Play frameworkについて
Shinobu Okano
JVM! JVM! JVM!
JVM! JVM! JVM!
Masaaki HIROSE
Javaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapi
Ken'ichi Sakiyama
「愛されたい!」と思ったときにJavaで書くRubyクラス
「愛されたい!」と思ったときにJavaで書くRubyクラス
Koichiro Ohba
ATN No.2 Scala事始め
ATN No.2 Scala事始め
AdvancedTechNight
WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」
Hiroaki NAKADA
Introduction to GraalVM
Introduction to GraalVM
Koichi Sakata
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJava
なおき きしだ
Play jjug2012spring
Play jjug2012spring
Takafumi Ikeda
Mbed2013
Mbed2013
lynxeyed
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
Tomohiro Kumagai
JDK 10 へようこそ
JDK 10 へようこそ
David Buck
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
AdvancedTechNight
VMを改めて学んで見る
VMを改めて学んで見る
kishima7
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
Koichi Sakata
Similar a JVMの中身を可視化してみた
(20)
Web技術勉強会 第31回
Web技術勉強会 第31回
ななめ45°から見たJavaOne
ななめ45°から見たJavaOne
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Javaに這いよる.NET
Javaに這いよる.NET
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Play frameworkについて
Play frameworkについて
JVM! JVM! JVM!
JVM! JVM! JVM!
Javaで簡単にgpgpu aparapi
Javaで簡単にgpgpu aparapi
「愛されたい!」と思ったときにJavaで書くRubyクラス
「愛されたい!」と思ったときにJavaで書くRubyクラス
ATN No.2 Scala事始め
ATN No.2 Scala事始め
WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」
Introduction to GraalVM
Introduction to GraalVM
JavaOne2015報告またはこれからのJava
JavaOne2015報告またはこれからのJava
Play jjug2012spring
Play jjug2012spring
Mbed2013
Mbed2013
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JDK 10 へようこそ
JDK 10 へようこそ
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
VMを改めて学んで見る
VMを改めて学んで見る
Guide to GraalVM (JJUG CCC 2019 Fall)
Guide to GraalVM (JJUG CCC 2019 Fall)
JVMの中身を可視化してみた
1.
JVMの中身を可視化してみた
by @eller86 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.
概要 JVMってよくわからないから 図にしてわかりやすくしよう!
3
4.
What's JVM?
4
5.
A Java Virtual
Machine (JVM) is a virtual machine capable of executing Java bytecode. – Wikipedia 5
6.
JVMがあるから Write Once, Run
Anywhere 6
7.
JVMがあるから Java as a
Platform 7
8.
なんか重要そうなことは分かったし Javaプログラムがどうやって動くか
理解するのに重要っぽい 8
9.
仕様書を読んでみよう! The Java Virtual
Machine Specification Second Edition オンライン(HTML、英語) 書籍(日本語) 書籍(英語) 9
10.
とりあえず
バイトコード ランタイムコンスタントプール オペランドスタック ローカル変数 → #jvmjvm 10
11.
バイトコード pop getstatic indexbyte1 indexbyte2 ldc
index invokevirtual indexbyte1 indexbyte2 →Javaバイトコード入門 11
12.
ランタイムコンスタントプール
12
13.
ランタイムコンスタントプール $ javap -verbose
Integer 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.
作ってみた
16
17.
ご清聴ありがとうございました forkできます!→
http://jsdo.it/eller86/jvms2 Twitter @eller86 ブログ http://dev.worksap.co.jp/ 17
Descargar ahora