09:50:10
2017-04-18 09:50:10 Atsushi Enoの投稿 atsushieno@mastodon.cloud
11:58:30
icon

技術書典で頒布したEssential Xamarinですが、(1)インプレスR&Dさんから商業出版していただく方向で動いています。各メンバーによる改訂・追補作業を経てリリースされることになるので、発売は夏頃になる見通しです。
また、(2)先日のアンケート結果をふまえて、通信販売できるよう、超技術書典と合わせて150部増やしました。販売準備出来たら改めてお知らせします。商業版は少し先になるので、早く読みたいという方はこちらが良いかと思います。

14:47:59
icon

@kurakake こちらこそよろしくお願いしますー。これからお世話になりますです

19:39:09
2017-04-18 19:39:09 Atsushi Enoの投稿 atsushieno@mastodon.cloud
21:41:15
icon

@yuka1984 それ日本に答えられる人いるんですかね(いてほしい) どんなコード書いてるかによると思うのですが、Androidのオブジェクトは薄いラッパーでしかないです。計測するなら、全体はadbなどで雑に拾い、マネージドコードは developer.xamarin.com/guides/c で拾うことになるでしょうね。

22:58:08
icon

@yuka1984 はい、(lib)mono(droid)ランタイムはネイティブライブラリなので、そこから必要とされるランタイムおよびマネージドコードのためのメモリは全てnative heap上に確保されます。Javaオブジェクトを生成するものは、dalvik heap上にオブジェクトを生成して、そいつとマネージドコードのオブジェクトがinteropします。

23:57:27
icon

@yuka1984 はい。Javaオブジェクトの生成や破棄はjava-interopというライブラリで行われます。中ではJNIEnvを使用しています。ネイティブ側のコードはこの辺 github.com/xamarin/java.intero にあるのですが、MCWが生成されたときにJNIEnv->AddGlobalRef()などを使用してJavaオブジェクトのポインタをピン止めしている感じです(開放時にJNIEnv->DeleteGlobalRef()します)。あとはJava.Lang.Objectのコンストラクタで「ポインタの所有権を動かす」フラグが立っていると挙動が変わる、とかですね(ユーザーは使わない前提)。