Enviar pesquisa
Carregar
Java オブジェクトの内部構造
•
1 gostou
•
2,279 visualizações
T
Taku Miyakawa
Seguir
Internal structures of Java objects (oops)
Leia menos
Leia mais
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 8
Baixar agora
Baixar para ler offline
Recomendados
C# 8
C# 8
m ishizaki
C++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みください
digitalghost
.NET Core 3.0 で使える C# 8
.NET Core 3.0 で使える C# 8
m ishizaki
20120422i phonedeveloperworkshoppublished
20120422i phonedeveloperworkshoppublished
Yoichiro Sakurai
大人のお型付け
大人のお型付け
Nobuhisa Koizumi
C++入門?
C++入門?
tsudaa
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
Recomendados
C# 8
C# 8
m ishizaki
C++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みください
digitalghost
.NET Core 3.0 で使える C# 8
.NET Core 3.0 で使える C# 8
m ishizaki
20120422i phonedeveloperworkshoppublished
20120422i phonedeveloperworkshoppublished
Yoichiro Sakurai
大人のお型付け
大人のお型付け
Nobuhisa Koizumi
C++入門?
C++入門?
tsudaa
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
ナウなヤングにバカうけのイカしたタグ付き共用体
ナウなヤングにバカうけのイカしたタグ付き共用体
digitalghost
Processing
Processing
Akifumi Nambu
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
HDCLT
HDCLT
Daigaku Ando
Define and expansion of cpp macro
Define and expansion of cpp macro
digitalghost
君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らない
digitalghost
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Shintarou Okada
任意粒度機能モデルコードクローン検出手法のリファクタリング理解への適用の試み
任意粒度機能モデルコードクローン検出手法のリファクタリング理解への適用の試み
Kamiya Toshihiro
実行トレース間のデータの差異に基づくデータフロー解析手法の提案
実行トレース間のデータの差異に基づくデータフロー解析手法の提案
Kamiya Toshihiro
ROS JAPAN Users Group Meetup 01
ROS JAPAN Users Group Meetup 01
Daiki Maekawa
Linq To Fun
Linq To Fun
deflis
templateとautoの型推論
templateとautoの型推論
MITSUNARI Shigeo
JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文
Appresso Engineering Team
TypeScript & 関数型講座 第2回 TypeScript という言語
TypeScript & 関数型講座 第2回 TypeScript という言語
gypsygypsy
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
Minero Aoki
C# 9 のおすすめ新機能
C# 9 のおすすめ新機能
m ishizaki
Lt8 JavaScriptで配列をコピーする
Lt8 JavaScriptで配列をコピーする
Shingo Inoue
Rubyの御先祖CLUのお話(原本)
Rubyの御先祖CLUのお話(原本)
洋史 東平
Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4
Takashi Hoshino
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章
Tomonobu_Hirano
深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開
Seiya Tokui
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
Taku Miyakawa
Mais conteúdo relacionado
Mais procurados
ナウなヤングにバカうけのイカしたタグ付き共用体
ナウなヤングにバカうけのイカしたタグ付き共用体
digitalghost
Processing
Processing
Akifumi Nambu
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
HDCLT
HDCLT
Daigaku Ando
Define and expansion of cpp macro
Define and expansion of cpp macro
digitalghost
君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らない
digitalghost
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Shintarou Okada
任意粒度機能モデルコードクローン検出手法のリファクタリング理解への適用の試み
任意粒度機能モデルコードクローン検出手法のリファクタリング理解への適用の試み
Kamiya Toshihiro
実行トレース間のデータの差異に基づくデータフロー解析手法の提案
実行トレース間のデータの差異に基づくデータフロー解析手法の提案
Kamiya Toshihiro
ROS JAPAN Users Group Meetup 01
ROS JAPAN Users Group Meetup 01
Daiki Maekawa
Linq To Fun
Linq To Fun
deflis
templateとautoの型推論
templateとautoの型推論
MITSUNARI Shigeo
JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文
Appresso Engineering Team
TypeScript & 関数型講座 第2回 TypeScript という言語
TypeScript & 関数型講座 第2回 TypeScript という言語
gypsygypsy
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
Minero Aoki
C# 9 のおすすめ新機能
C# 9 のおすすめ新機能
m ishizaki
Lt8 JavaScriptで配列をコピーする
Lt8 JavaScriptで配列をコピーする
Shingo Inoue
Rubyの御先祖CLUのお話(原本)
Rubyの御先祖CLUのお話(原本)
洋史 東平
Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4
Takashi Hoshino
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章
Tomonobu_Hirano
Mais procurados
(20)
ナウなヤングにバカうけのイカしたタグ付き共用体
ナウなヤングにバカうけのイカしたタグ付き共用体
Processing
Processing
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
HDCLT
HDCLT
Define and expansion of cpp macro
Define and expansion of cpp macro
君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らない
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
任意粒度機能モデルコードクローン検出手法のリファクタリング理解への適用の試み
任意粒度機能モデルコードクローン検出手法のリファクタリング理解への適用の試み
実行トレース間のデータの差異に基づくデータフロー解析手法の提案
実行トレース間のデータの差異に基づくデータフロー解析手法の提案
ROS JAPAN Users Group Meetup 01
ROS JAPAN Users Group Meetup 01
Linq To Fun
Linq To Fun
templateとautoの型推論
templateとautoの型推論
JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文
TypeScript & 関数型講座 第2回 TypeScript という言語
TypeScript & 関数型講座 第2回 TypeScript という言語
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
C# 9 のおすすめ新機能
C# 9 のおすすめ新機能
Lt8 JavaScriptで配列をコピーする
Lt8 JavaScriptで配列をコピーする
Rubyの御先祖CLUのお話(原本)
Rubyの御先祖CLUのお話(原本)
Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章
Destaque
深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開
Seiya Tokui
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
Taku Miyakawa
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
Taku Miyakawa
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
Graph Algorithms Part 1
Graph Algorithms Part 1
Taku Miyakawa
Introduction to DEEPstation the GUI Deep learning environment for chainer
Introduction to DEEPstation the GUI Deep learning environment for chainer
Ryo Shimizu
CuPy解説
CuPy解説
Ryosuke Okuta
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
Destaque
(8)
深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワーク Chainer の開発と今後の展開
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Graph Algorithms Part 1
Graph Algorithms Part 1
Introduction to DEEPstation the GUI Deep learning environment for chainer
Introduction to DEEPstation the GUI Deep learning environment for chainer
CuPy解説
CuPy解説
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Semelhante a Java オブジェクトの内部構造
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
伸男 伊藤
asm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web games
Noritada Shimizu
第1回python勉強会
第1回python勉強会
Yoshio Shimomura
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
Tomoharu ASAMI
JavaScript入門
JavaScript入門
Ryo Maruyama
Kanazawa.js.Next
Kanazawa.js.Next
dynamis
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
Hiromi Ishii
第2回勉強会スライド
第2回勉強会スライド
koturn 0;
Objc lambda
Objc lambda
matuura_core
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
とあるFlashの自動生成
とあるFlashの自動生成
Akineko Shimizu
Programming camp code reading
Programming camp code reading
Hiro Yoshioka
Php in ruby
Php in ruby
do_aki
Project lambda
Project lambda
Appresso Engineering Team
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
Atsushi Tadokoro
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
monglee
Introduction of Python
Introduction of Python
Tomoya Nakayama
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
PHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較する
kwatch
Semelhante a Java オブジェクトの内部構造
(20)
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
asm.js x emscripten: The foundation of the next level Web games
asm.js x emscripten: The foundation of the next level Web games
第1回python勉強会
第1回python勉強会
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
JavaScript入門
JavaScript入門
Kanazawa.js.Next
Kanazawa.js.Next
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
How wonderful to be (statically) typed 〜型が付くってスバラシイ〜
第2回勉強会スライド
第2回勉強会スライド
Objc lambda
Objc lambda
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
とあるFlashの自動生成
とあるFlashの自動生成
Programming camp code reading
Programming camp code reading
Php in ruby
Php in ruby
Project lambda
Project lambda
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
メディア・アートII 第3回 openFrameworks基礎 OOoF : オブジェクト指向 oF
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
プログラミング言語 Ruby 2章 Rubyプログラムの構造と実行
Introduction of Python
Introduction of Python
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
PHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較する
Mais de Taku Miyakawa
Matrix Multiplication in Strassen Algorithm
Matrix Multiplication in Strassen Algorithm
Taku Miyakawa
擬似乱数生成器の評価
擬似乱数生成器の評価
Taku Miyakawa
コルーチンの実装について
コルーチンの実装について
Taku Miyakawa
言語設計者が意味論を書くときに考えていたこと
言語設計者が意味論を書くときに考えていたこと
Taku Miyakawa
Kink の宣伝
Kink の宣伝
Taku Miyakawa
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
Taku Miyakawa
Java Quine Golf
Java Quine Golf
Taku Miyakawa
Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354
Taku Miyakawa
Processing LTSV by Apache Pig
Processing LTSV by Apache Pig
Taku Miyakawa
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
Java 7 invokedynamic の概要
Java 7 invokedynamic の概要
Taku Miyakawa
Hadoop jobbuilder
Hadoop jobbuilder
Taku Miyakawa
Kink: developing a programming language on the JVM
Kink: developing a programming language on the JVM
Taku Miyakawa
Mais de Taku Miyakawa
(14)
Matrix Multiplication in Strassen Algorithm
Matrix Multiplication in Strassen Algorithm
擬似乱数生成器の評価
擬似乱数生成器の評価
コルーチンの実装について
コルーチンの実装について
言語設計者が意味論を書くときに考えていたこと
言語設計者が意味論を書くときに考えていたこと
Kink の宣伝
Kink の宣伝
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
Java Quine Golf
Java Quine Golf
Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354
Processing LTSV by Apache Pig
Processing LTSV by Apache Pig
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Java 7 invokedynamic の概要
Java 7 invokedynamic の概要
Hadoop jobbuilder
Hadoop jobbuilder
Kink: developing a programming language on the JVM
Kink: developing a programming language on the JVM
Último
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
Último
(10)
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
Java オブジェクトの内部構造
1.
Java オブジェクトの内部構造
2011-08-20 宮川 拓 (@miyakawa_taku)
2.
自己紹介
名前 宮川 拓 Twitter @miyakawa_taku 職業 SI屋 仕事 Hadooper Java 歴 4年 JVM 上で動くオレオレ言語を作っています http://code.google.com/p/kink-lang/
3.
問題設定 • Java オブジェクトが
JVM 上でどの様な実体 として表現されているのかが知りたい 1. Java オブジェクトを表現する構造体 2. Java オブジェクトに対する参照の持ち方 (フィー ルド、一時変数、配列の要素) 3. Java オブジェクトの作成・破棄の動作
4.
今日読む主なソースコード • interpreter/bytecodeInterpreter.cpp
– オブジェクトがどのような構造体として扱われてい るかを見る • oop/oop.hpp • oop/instanceOop.hpp – オブジェクトのメモリイメージを見る • oop/oop.inline.hpp – フィールドへのアクセス方法を見る
5.
oop 実装クラスの階層 oop
ヒープ上に確保される構造体の総称 instanceOop ふつうのクラスのインスタンス methodOop メソッド constMethodOop ? methodDataOop メソッドのプロファイリングデータ arrayOop 配列のインスタンス objArrayOop 参照型の配列のインスタンス typeArrayOop プリミティブ型の配列のインスタンス constantPoolOop メソッドのコンスタントプール constantPoolCacheOop メソッド実行時情報 (フィールドオフセット等) symbolOop メソッド名、クラス名等の intern 表現 klassOop クラス markOop 他の oop のメタ情報の一部。GC対象外 compiledICHolderOop ?
6.
oop のメモリイメージ
oopDesc _mark: markOop /* GCのためのメタ情報 */ _klass: klassOop /* oop の型 */ xxxOopDesc oop 実装クラスごとのメンバ変数 後続領域 oop 実装クラスごとの追加情報 /* こんなイメージ */ typedef struct { int x; int y; char buf[0]; } bitmap; bitmap *b = malloc(sizeof(bitmap) + x * y); b->x = x; b->y = y; memcpy(b->buf, buf, x * y);
7.
instanceOop のメモリイメージ
oopDesc _mark: markOop /* GCのためのメタ情報 */ _klass: klassOop /* oop の型 */ instanceOopDesc /* 特有のメンバ変数は無し */ 後続領域 フィールド群 jint num = 42 oop title ⇒ “VOXXX!”: java.lang.String oop info = null フィールドの種類と数は _klass によって決まる
8.
触れなかった || 分からなかった所 •
narrowOop と UseCompressedOops – Compressed oops 機能関連 • constMethodOop って何? – これはあまり深くなさそう • compiledICHolderOop って何? – JIT コンパイルに絡んでいそう • JIT コンパイルによるメソッド実体の差し変え はどのクラスの担当?
Baixar agora