Submit Search
Upload
ここが変だよDalvik仮想マシン
•
Download as PPTX, PDF
•
13 likes
•
8,617 views
Takuya Matsunaga
Follow
Engineering
Report
Share
Report
Share
1 of 27
Download now
Recommended
吟遊プログラマーをめざして
吟遊プログラマーをめざして
Hitoshi Wada
Thank you for_moving_to_a_rural_area
Thank you for_moving_to_a_rural_area
株式会社メンバーズエッジ
データベース定義書の更新は再考の仕事
データベース定義書の更新は再考の仕事
Atsushi Yasuda
Handii スタートアップエンジニア開発課題LT day2
Handii スタートアップエンジニア開発課題LT day2
Yusuke Mori
Dalvik仮想マシンのアーキテクチャ 改訂版
Dalvik仮想マシンのアーキテクチャ 改訂版
Takuya Matsunaga
Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版
Takuya Matsunaga
詳解Dexファイルフォーマット
詳解Dexファイルフォーマット
Takuya Matsunaga
Deep Leaningと超解像
Deep Leaningと超解像
Takuya Matsunaga
Recommended
吟遊プログラマーをめざして
吟遊プログラマーをめざして
Hitoshi Wada
Thank you for_moving_to_a_rural_area
Thank you for_moving_to_a_rural_area
株式会社メンバーズエッジ
データベース定義書の更新は再考の仕事
データベース定義書の更新は再考の仕事
Atsushi Yasuda
Handii スタートアップエンジニア開発課題LT day2
Handii スタートアップエンジニア開発課題LT day2
Yusuke Mori
Dalvik仮想マシンのアーキテクチャ 改訂版
Dalvik仮想マシンのアーキテクチャ 改訂版
Takuya Matsunaga
Dalvikバイトコードリファレンスの読み方 改訂版
Dalvikバイトコードリファレンスの読み方 改訂版
Takuya Matsunaga
詳解Dexファイルフォーマット
詳解Dexファイルフォーマット
Takuya Matsunaga
Deep Leaningと超解像
Deep Leaningと超解像
Takuya Matsunaga
光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga
ソフトウェア組織マインド
ソフトウェア組織マインド
Takuya Matsunaga
ある製造業のチームトポロジー
ある製造業のチームトポロジー
Takuya Matsunaga
クリーンアーキテクチャを試してみた
クリーンアーキテクチャを試してみた
Takuya Matsunaga
組込エンジニアのための深層学習
組込エンジニアのための深層学習
Takuya Matsunaga
進化するArt
進化するArt
Takuya Matsunaga
Design by contractとホーア論理
Design by contractとホーア論理
Takuya Matsunaga
More Related Content
More from Takuya Matsunaga
光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga
ソフトウェア組織マインド
ソフトウェア組織マインド
Takuya Matsunaga
ある製造業のチームトポロジー
ある製造業のチームトポロジー
Takuya Matsunaga
クリーンアーキテクチャを試してみた
クリーンアーキテクチャを試してみた
Takuya Matsunaga
組込エンジニアのための深層学習
組込エンジニアのための深層学習
Takuya Matsunaga
進化するArt
進化するArt
Takuya Matsunaga
Design by contractとホーア論理
Design by contractとホーア論理
Takuya Matsunaga
More from Takuya Matsunaga
(7)
光コラボは契約してはいけない
光コラボは契約してはいけない
ソフトウェア組織マインド
ソフトウェア組織マインド
ある製造業のチームトポロジー
ある製造業のチームトポロジー
クリーンアーキテクチャを試してみた
クリーンアーキテクチャを試してみた
組込エンジニアのための深層学習
組込エンジニアのための深層学習
進化するArt
進化するArt
Design by contractとホーア論理
Design by contractとホーア論理
ここが変だよDalvik仮想マシン
1.
ここが変だよ Dalvik仮想マシン (古い) 僻地のプログラマkmt-t
2.
自己紹介 ▪ ハンドルネーム ▪ kmt-tまたはkmt_t ▪
業務系アプリケーションエンジニア ▪ 2年前まで組み込みやってました ▪ 心はいまだに組み込みエンジニア ▪ 得意分野 ▪ 画像処理 (2D&3D)/ファイルシステム/仮想マシン/C++/C#
3.
こんなところから来ました ▪ 鳥取県と島根県、どっちが右でどっち が左かわかりますか? ▪ 特急二本乗り換えなのでめっちゃ移 動しんどいです
4.
告知 ▪ 2014年7月~8月あたりに本出します! ▪ AndroidのDalvik仮想マシンの解説本! ▪
出版社は達人出版会! ▪ 表紙は萌え~な感じでデザインしてもらいました!
5.
ちょっとだけ褒めてほしい ▪ 本の執筆開始は2012年12月 ▪ つまり執筆期間19ヶ月! ▪
無駄に大変だったんですよ!マジで! ▪ みなさん褒めてください!
6.
ここでニュース Dalvik仮想マシンご臨終 おーこれは! Dalvik消されるのか。 “Dalvik is
dead, long live Dalvik!” https://android.googlesource.com/platform/dalvik/+/66398b57e3 3cba0c38d2aa510712bf3e6fbc7645 … Dalvik本書いてる人の事を脳裏に うかべてうおおぉぉぉぉおってなってる
7.
これは昔こういうのがありましたよね ▪ Googe Wa○eの本を書いてた人 が昔いましたよね ▪
Googleよ、同じ罪を犯すのか…
8.
俺はようやくのぼりはじめたばかりだからな このはてしなく遠いDalvik坂をよ! (お約束)
9.
Dalvikの後継のART ▪ 流れ的に続きの本を書くことになりそうです ▪ 書かないと成仏できない 左の拳でDalvikを殴った後の返す右の拳で ART本、期待してます! 今年度中には出るよね?
10.
俺の憎しみを浄化するために 今日は思いっきりDalvik仮想マシンをdisります
11.
Dalvik仮想マシンの変なところ① オレオレアロケータ ▪ Dalvik仮想マシンにはクラスローダ専用の「リニアアロケータ」というアロケータが あります。
12.
リニアロケータとは ▪ ヒープ領域の先頭から順番にメモリを割り当てていきます ▪ 以下の様なデータがリニアアロケータでアロケートされます ▪
クラスのフィールドの情報 ▪ クラスのメソッドの情報 ▪ vtable
13.
断片化は大丈夫なの? ▪ 一度ロードしたクラスはアンロードされないから大丈夫! ▪ というかDalvik仮想マシンではクラスはアンロードできない! ▪
でもそのかわりアロケーションが高速だよ! ▪ えっ、そんなことのためにオレオレアロケータ?…
14.
補足 ▪ C言語では一般的によっぽどのことがない限りオレオレアロケータは重罪です
15.
気を取り直して
16.
Dalvik仮想マシンの変なところ② オレオレコンテナ ▪ オレオレコンテナてんこもりです
17.
オレオレコンテナ一覧 ▪ PointerSet ▪ アドレスでソート済みのポインタを格納する配列 ▪
ReferenceTable ▪ VMで使用してるオブジェクトをGCから保護する配列 ▪ IndirectRefTable ▪ JNIで使用してるオブジェクトをGCから保護する配列
18.
オレオレコンテナ一覧 ▪ HashTable ▪ いつものやつ ▪
BitVector ▪ フラグの配列 ▪ GrowableList ▪ 可変長配列
19.
オレオレコンテナの使い方 ▪ テンプレートなどつかってないので当然毎回キャストです BasicBlock *bb
= (BasicBlock *) dvmGrowableListGetElement(blockList, blockIdx);
20.
補足 ▪ C++では一般的によっぽどのことがない限りオレオレコンテナは重罪です
21.
こうなっている理由 ▪ Googleのコード規約では例外が使えない ▪ http://www.textdrop.net/google-styleguide-ja/cppguide.xml ▪
例外が使えないなら例外を含むSTLは使えない ▪ 実際問題初期のAndroidのツールチェインはデフォルトで例外オフ、STLなし ▪ まあ、コーディング規約で決まってるんだから仕方ないですよね! ▪ そうですよね! ▪ 諦めましょう
22.
Dalvik仮想マシンの変なところ③ 謎の巨大物体 ▪ 不吉を予感するファイル名、Globals.h ▪ Sublime
Textで開いてみましょう
23.
なんじゃこりゃー! ▪ DvmGlobalsというグローバル 変数が1000行ぐらい続きます ▪ これは外部リンクにする必要が あるのか?というグローバル変 数がいっぱい ▪
このヘッダファイルは全部のcpp ファイルから参照されています
24.
ここでおさらい モジュール結合度 ▪ 内容結合(Content coupling)「高」 ▪
共通結合(Common coupling) ▪ 外部結合(External coupling) ▪ 制御結合(Control coupling) ▪ スタンプ結合(Stamp coupling) ▪ データ結合(Data coupling) ▪ メッセージ結合(Message coupling)「低」
25.
あれ、なにか見えた気がするぞ
26.
…
27.
ご清聴ありがとうございました! ▪気が向いたら本買ってください
Download now