うぃまの旅日誌

公開

Android端末の調査報告5 【提案② :Androidランタイムのメモリ消費】


( 前回の続きです )

……○……○……○……○……
メモリ消費が大きい要素②「Androidランタイム」

Androidランタイムそのものは、Javaのプログラムを書き替えてOS上に表示するために必要になるので、外すのは厳しそうだなと思いました…。
そのため、Androidランタイムの処理を軽くする方法はないか探しました。
(※検証結果を得られていないため、改善を保証できるものでないことを先にお詫びいたします。)




………………………………
[ART13、14]
実は、Android12以降は"OSのバージョンアップ"と"ART(Androidランタイム)のアップデート"が別々で行われるようになっているそうです。OSのバージョンアップはしていても、ARTのアップデートができていないと処理が重くなるのかなと思いました。


設定→セキュリティとプライバシー→システムとアップデート→Google Play システムアップデート→「ART」


の手順で更新できるとのことですが、今現在その項目があるのかはAndroidスマホを所持していない関係でよく分かっていないです…。


ART14に関しては、今後リリースする予定といった記事をいくつか見かけたので、まだ実装されていないかもしれないです。
※参考にしたサイト
・OS更新なしにアプリが高速化!ARTが独自アップデート可能に
https://gihyo.jp/article/2023/08/android-weekly-topics-230831

・Google Play システム アップデート「Android Runtime」更新内包へ
https://jetstream.buzz/archives/175428





………………………………
[キャッシュ競合]
こちらは前述しましたが、仮にこの現象が発生していたとすると、Androidランタイムによるメモリ使用量がかなり増えてしまうのではないかと思いました。

Androidランタイムは、CPUがデータ処理を行えるよう、JavaのプログラムをOS上で読み取れる形にコード変換する働きがあることを調査報告2でお伝えしました。

ただ、Androidランタイムの介入でJava自体はメモリを直接操作できないこともお伝えしました。
そうなると、コード変換の際にJavaのプログラムがキャッシュメモリに上手く伝達されず、「キャッシュメモリにデータが無い」という事態に陥る可能性はありそうだと私は考えています。
結果として、"キャッシュ競合"が起きているといえるのではないでしょうか。(※キャッシュ競合の発端となるキャッシュメモリはCPU内部にあります。)

(※追記: 調査報告2で、「メンテ後ログインできなくなり、時間の経過と共にログインできるようになる」といったコメントを頂きました。メンテ後の追加データをコード変換した際にキャッシュ競合が起き、一時的にデータの処理速度が著しく低下しているというのは、一つの可能性としてありそうに感じました。)




この現象が発生していた場合は、「CPUのコア数を減らし、クロック周波数(データの処理速度)を上げる」と改善されそうな気がしました。(クロック周波数は上げすぎると発熱の原因になってしまうようです。)


コア数とクロック周波数の関係性について、ゆっくり検証されている動画がありましたので、URLを貼ります↓。
・2コア4GHz vs 8コア1GHzどっちが速いか?(ゆっくり解説)
https://www.youtube.com/watch?v=0I3uw9yNnks

動画内でも紹介されていますが、「Cinebench」などのベンチマークテスト(コンピュータの性能をテストすることです。)を行うソフトを使用することで、CPUのコア数やクロック周波数を変更することが可能なようです。
ベンチマークテストの種類は主にCPU、GPU、メモリ、ストレージがあります。
※参考にしたサイト
・【PC初心者】CPUやGPUの成績表:ベンチマークテストって何??【PC選び-備忘録 ♯7】
https://nlab-notebook.com/entry/pc-select-beginner-part7#toc14





……○……○……○……○……
Androidスマホで利用できるベンチマークソフトの一部を以下に記載します。(英語表記のものがほとんどなので、使いづらさはあるかもしれません。ソフトウェアのため、却ってメモリを圧迫してしまう可能性はあります。)



………………………………
・3DMark-The Gamer's Benchmark

https://play.google.com/store/apps/details?id=com.futuremark.dmandroid.application&hl=ja&gl=US


………………………………
・PCMark for Android Benchmark

https://play.google.com/store/apps/details?id=com.futuremark.pcmark.android.benchmark&hl=ja&gl=US


………………………………
・PassMark Performance Test

https://play.google.com/store/apps/details?id=com.passmark.pt_mobile&hl=ja&gl=US


………………………………
・Android用のCinebench
(※ストアの説明書きに"Google Play ストア以外のソースからアプリをインストールできるようにします。"とあるので、セキュリティ面の問題がないか気になります…。)

https://androidapp.jp.net/apk/1438772273/cinebench


………………………………
・CINEBENCH R23

https://cinebench-r15.updatestar.com/ja


………………………………

( 続きは明日に投稿します )




うぃま

コメント

1

イアルの冒険者

アレックス

ID: xdi24dc4xiff

今回のAndroid14でのクラッシュ問題については、UNITY由来のものの可能性があります。

根拠としては、今日たまたまPC版をタスクキルする機会があったのですが、その際にUNITYの文字が見えたからです。

PC版がUNITY製ならアプリ版も同様でしょう。

今回運営はこのページに書かれた感じの対応されるのかなと思います。

https://www.stmn.tech/entry/2024/01/29/213523

2

うぃま

ID: rsdex3kt8uak

>> 1
アレックスさんコメントありがとうございます。
なるほど、確かにAndroid端末にもUnityが使われている可能性はありそうです。

一つ気になったのが、教えてくださったサイトの画像の中に"java"や"dalvik"(Androidランタイムの前に使用されていた仮想マシン)の名称が書き込まれていました。
Unityはプログラミング言語としてC♯を主に使用しているみたいですが、Javaとも何か関係性があるのかもしれません。

もし、今回の不具合が解消された場合は、どのような対応をしたか運営さんからお知らせがあるといいですね。Androidユーザーさんが今後も安心してキャラストをプレイするためにも。

3

旅日誌ビギナー

CODA・ev

ID: 3camnmzzqexc

https://www.slideshare.net/slideshow/unite-2018-tokyocaravan-stories/96488912
ご参考までに。

4

うぃま

ID: rsdex3kt8uak

>> 3
CODA・evさんありがとうございます!
本当にUnityで開発されているんですね。
ずっと私間違った情報を流し続けてたのかな〜…とちょっと疑心暗鬼になってます。💦

5

旅日誌ビギナー

CODA・ev

ID: 3camnmzzqexc

>> 4
開発環境はUnityでも、実装はJavaでなされてると思います(憶測)

6

旅日誌ビギナー

CODA・ev

ID: 3camnmzzqexc

>> 5
↑(補足)iOs及びAndriod版のみ
PC版は、保守・運用までUnityでなされてると思います。

7

旅日誌ビギナー

CODA・ev

ID: 3camnmzzqexc

>> 4
完全に100%正しい情報を発信するのは、原理的に不可能だと思いますし、そこに有用性があり、誠実さにもとづいているのならなんら問題はないと思いますよ。気に病まれる必要はありません!

8

うぃま

ID: rsdex3kt8uak

>> 7
そうですね…。どうしても憶測による部分は出てしまいますよね。
気遣ってくださってありがとうございます!