このエントリーをはてなブックマークに追加
>> Android用語集

Dalvik Debug Monitor Service(ダルビック デバッグ モニター サービス)

DDMSはAndroidのデバッグツールです。

DDMSの実行

コマンドラインから実行

SDKのtoolsフォルダーのddms.batから呼び出します。

Eclipseプラグイン

2009年3月現在、Eclipseのプラグインでは、Allocation trackerは使えません。

DDMS パースペクティブに切り替えます。 あるいは、見たいビューを開きます。

活用例

OpenGLでのループでのメモリアロケートを調べる

toolsのddms.batを開きます。 プロセスから、見てみたいアプリを選びます。

ループしているところで、Allocation Tracker タブを選んで、 Start Trackingを開始します。 数秒したらGet Allocationを押して、Stop Trackingします。 すると、一覧がでます。ここでOpenGLだと、Mainとは別スレッドでまわしている場合も多いですが、 Threadsタブからスレッドの番号を調べて、そのスレッド番号のところを見ます。 だいたい、ループですので、繰り返して発生していると思います。たとえば、単純に四角を描く下のコードですと、3箇所発生します。

    public void display(GL10 gl) {
        gl.glEnableClientState (GL10.GL_VERTEX_ARRAY);
        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mFVertexBuffer); //alloc 20

    gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
    gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, mTextureBuffer); //alloc 20
        gl.glColor4f(1, 1, 1, 1);
        gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

        gl.glDrawElements(GL10.GL_TRIANGLES, 6,GL10.GL_UNSIGNED_SHORT, mIndexBuffer);//alloc 20
    }

とくに、glVertexPointerとglTexCoordPointerはループで実行する必要がないので、初期化の部分に移動します。 gl.glDrawElementsも場合によっては、glDrawArraysとします。(コードの修正たくさんしないといけませんが)

そして、もう1度実行すると、今度はAllocation Trackeで見てみても該当箇所が出ないと思います。 こういうのを繰り返しながら、無駄な部分を減らしていきます。

情報ページ

Allocation trackerについて http://d.hatena.ne.jp/androidzaurus/comment?date=20090213

DDMSについて http://d.hatena.ne.jp/bs-android/20090203/1233675390


関連サイト
www.akjava.com | github.com/akjava
Copyright (C) 2008-20014 Aki Miyazakion Google+ All Rights Reserved.