技術書典で頒布したEssential Xamarinですが、(1)インプレスR&Dさんから商業出版していただく方向で動いています。各メンバーによる改訂・追補作業を経てリリースされることになるので、発売は夏頃になる見通しです。
また、(2)先日のアンケート結果をふまえて、通信販売できるよう、超技術書典と合わせて150部増やしました。販売準備出来たら改めてお知らせします。商業版は少し先になるので、早く読みたいという方はこちらが良いかと思います。
技術書典で頒布したEssential Xamarinですが、(1)インプレスR&Dさんから商業出版していただく方向で動いています。各メンバーによる改訂・追補作業を経てリリースされることになるので、発売は夏頃になる見通しです。
また、(2)先日のアンケート結果をふまえて、通信販売できるよう、超技術書典と合わせて150部増やしました。販売準備出来たら改めてお知らせします。商業版は少し先になるので、早く読みたいという方はこちらが良いかと思います。
@yuka1984 それ日本に答えられる人いるんですかね(いてほしい) どんなコード書いてるかによると思うのですが、Androidのオブジェクトは薄いラッパーでしかないです。計測するなら、全体はadbなどで雑に拾い、マネージドコードは https://developer.xamarin.com/guides/cross-platform/profiler/ で拾うことになるでしょうね。
@yuka1984 はい、(lib)mono(droid)ランタイムはネイティブライブラリなので、そこから必要とされるランタイムおよびマネージドコードのためのメモリは全てnative heap上に確保されます。Javaオブジェクトを生成するものは、dalvik heap上にオブジェクトを生成して、そいつとマネージドコードのオブジェクトがinteropします。
@yuka1984 はい。Javaオブジェクトの生成や破棄はjava-interopというライブラリで行われます。中ではJNIEnvを使用しています。ネイティブ側のコードはこの辺 https://github.com/xamarin/java.interop/blob/master/src/java-interop/java-interop-gc-bridge-mono.c にあるのですが、MCWが生成されたときにJNIEnv->AddGlobalRef()などを使用してJavaオブジェクトのポインタをピン止めしている感じです(開放時にJNIEnv->DeleteGlobalRef()します)。あとはJava.Lang.Objectのコンストラクタで「ポインタの所有権を動かす」フラグが立っていると挙動が変わる、とかですね(ユーザーは使わない前提)。