Shion のもくログ(旧: Shion の技術メモ)

使った技術のメモや、うまくいかなかった事とかを綴ります

PR

2025/04/05 ~ 2025/04/11 のもくもく日記

もくもく 前回までは

2025/03/29 ~ 2025/04/04 のもくもく日記 をご覧ください。

途中経過

その1

今日はNode .js のヒープ制限に引っ掛かったのだけど、初めてすぎてびっくりしたw

Tracing garbage collection を参考に下記コマンドを試しながら調整してみたのだけど、 始めてみるオプションばかリだったw

  • GC の様子の確認
    node --trace-gc ???.js
    
  • 意図的にヒープサイズを制限する
    node --max-old-space-size=?? ???.js
    

その2

動的にJava コードを呼び出す? ServiceLoader の仕組みは、このブログが参考になりそう。

Google Auto(AutoService)を使ってサービス・プロバイダー(ServiceLoader)向けのファイルを自動生成する - CLOVER🍀

その3

Hyperion-Android のコードを読んでいたら、 AndroidManifest に見慣れない記述があるなと思って調べてみたら、 そういえばAndroid アプリ起動時に自動的に実行されるライブラリがあったことを思い出した。

App Startup | App architecture | Android Developers

ちなみに依存関係の解決は下記のあたりでやっているように見えた。

https://github.com/willowtreeapps/Hyperion-Android/blob/3756f826354c2f9bd9bd3d9ef1f4d7b3744c6628/hyperion-core/src/main/java/com/willowtreeapps/hyperion/core/internal/HyperionInitializer.java#L23-L24

その4

Hyperion-iOS も、何故ライブラリを導入するだけで機能が使えるかを調べていたのだけど、 多分下記のコードでSwizziling している点が肝な気がした。

どちらもクラスを拡張して、Objective-C 文法の + (void)load のタイミング(メモリ展開後、main関数呼び出し前) でSwizziling しているっぽい。

今回の進捗

※関連SNS
PR