タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

Androidとprogrammingとmemoryに関するastk_fのブックマーク (15)

  • Android Bitmapをあらかじめ縮小してから読み込む(OutOfMemory対策) - Qiita

    今の端末だと10Mピクセルを越えるカメラを搭載した端末が普通になってきており、そのファイルサイズも数MBに及びます。 AndroidでBitmapFactoryを利用してフォトライブラリーから画像を読み込んだりすると思いますが、そのままその画像を読み込んでしまうと、しばしばOutOfMemoryとなりアプリが強制終了してしまいます。 そこで、実際に画像を読み込む前にある程度縮小してから読み込むことで、メモリが足りなくなることを防ごうというのが今回のネタです。 BitmapFactory.OptionsのinSampleSizeを指定して画像を縮小した状態で読み込む 処理の流れ的にはまず画像のサイズを取得して、サイズが大きかったら縮小指定してから読み込もう、という感じです。 InputStream inputStream = getContentResolver().openInputStr

    Android Bitmapをあらかじめ縮小してから読み込む(OutOfMemory対策) - Qiita
  • Android : Canvas: trying to use a recycled bitmap

    Android で、Bitmap をごにゅごにゅしていると、 java.lang.RuntimeException:"Canvas: trying to use a recycled  bitmap" ってのに、出くわすことがあります。Web でいろいろ調べてみると、怪しげな解説がかなりあるので、当のところ何が正しい理解なのかをまとめておきたいと思います。 そもそも、Bitmap#recycle() をやらないといけないのは、主に Android のこの辺の実装がよろしくなくて、recycle() してやらないと、メモリリークになるよ、といわれていることが、大きな要因です。勢い、メモリリーク怖さになんでも recycle() しようとして、件の例外に遭遇することとなる訳です。しかし、どういったケースでそれが必要になるのか、筋の通った記事をあまり見かけません。 まず、誰が  ”trying

  • Android のメモリ管理 #4 SoftReference と WeakReference を活用する | DevelopersIO

    参照方法によってメモリの解放タイミングが異なる Android ではオブジェクトがヒープ領域にたまりメモリ不足が生じたとき、 ガベージコレクション(GC) が起動して不要なオブジェクトのメモリを開放してくれます。 実装コードではすべてのオブジェクトを手動で開放する必要はなく、基的には GC の挙動に任せることでメモリ圧迫を軽減できます。特に「不要なオブジェクト」という点が重要で、GC はオブジェクトの参照状態を見て不要かどうか判断します。 参照方法にはいくつか種類があります。通常の参照方法は強参照と呼ばれますが、そのほかにソフト参照(SoftReference)や弱参照(WeakReference)と呼ばれる参照方法があります。これらの参照方法によって GC でメモリから開放されるタイミングが異なるというわけです。 ということで今回は SoftReference と WeakRefere

    Android のメモリ管理 #4 SoftReference と WeakReference を活用する | DevelopersIO
  • Android のメモリ管理 #2 Allocation Tracker でメモリに割り当てられたオブジェクトを調べる | DevelopersIO

    はじめに Allocation Tracker はある時間とある時間の間でメモリにどのような種類のオブジェクトがアロケート(割り当て)されたかを調べることができるツールです。Android SDKに含まれている機能なのでAndroidの開発環境が最低限整っていれば誰でも使用することができます。 前回のブログでは概要のみでしたので、今回はこのツールの機能と活用方法について具体的に見ていこうと思います。 アロケートを確認してみる 説明が多くても分かりづらいと思うので、まずはアロケートを確認してみましょう。 例として、以下のようなカスタムViewを作りました。 CustomView.java package jp.classmethod.android.sample.sampleproject; import android.content.Context; import android.gra

    Android のメモリ管理 #2 Allocation Tracker でメモリに割り当てられたオブジェクトを調べる | DevelopersIO
  • Android のメモリ管理 #3 Heap dump でメモリリークの原因を解析する | DevelopersIO

    Heap dump とは Heap dump は現時点でどのようなオブジェクトがメモリに確保されているか解析するための機能です。 動作中のアプリの任意のタイミングでヒープのスナップショットをとる (HPROF形式のファイルとして出力する) ことができます。 このツールも Allocation Tracker と同様、Android SDKに含まれている機能なのでAndroidの開発環境が最低限整っていれば誰でも使用することができます。 今回は Eclipse Memory Analyzer (以下MAT) の使用方法を通して、 Heap dump を利用したメモリ解析について解説したいと思います。 Androidアプリのヒープ領域 ヒープ領域とは、動的に確保できるメモリ領域のことを指します。Androidのヒープ領域は Linuxヒープ (ネイティブヒープ) と Dalvikヒープ (Ja

    Android のメモリ管理 #3 Heap dump でメモリリークの原因を解析する | DevelopersIO
  • Android のメモリ管理 #1 メモリ使用量の分析・解析ツールを知る | DevelopersIO

    はじめに よりよいアプリをつくるためには、メモリ管理はとても重要です。 スマホはPCと違ってメモリ不足がとても起こりやすいので、メモリ管理への考慮が不十分だと OutOfMemory (メモリ不足によるエラー) がすぐに発生し、アプリが強制終了してしまいます。また、メモリ不足の状態のアプリはとてもパフォーマンスが悪く、ユーザーの思いがけない誤操作にもつながります。システム全体や他のアプリに影響を与えてしまうことも考えられます。 つまり実装はもちろん、画面遷移やレイアウトのデザイン、仕様などAndroidアプリ開発のすべてのプロセスにおいて 「メモリ消費を抑える」 という点を常に配慮する必要があります。 ということで、このシリーズではAndroidアプリにおけるメモリ管理の方法やツールの紹介、実装のコツなどのTipsを紹介していきたいと思います。 今回は第一回目ということで、アプリのメモリ使

    Android のメモリ管理 #1 メモリ使用量の分析・解析ツールを知る | DevelopersIO
  • Android 大きい画像を効果的に読み込む

    Loading Large Bitmaps Efficiently の内容なのですが、補足も入れてメモっておきます。 端的にいうと、 実際に表示するサイズより大きい Bitmap を読みこむのはメモリの無駄 (拡大させるとかなら話は別だけど) ・高解像度のカメラで取られた写真は往々にしてディスプレイのピクセルサイズより大きい ・サムネイルとして使うのに元のサイズのまま読み込むのはばかげてる ・大きいサイズの Bitmap をメモリに展開したら OutOfMemoryException になる ステップとしては3つ 1. メモリに Bitmap 展開せずに、サイズや MimeType だけを取得する 2. 1. の情報をもとにサブサンプルにサイズを決める 3. 2. で決めたサブサンプルで Bitmap をメモリに読み込む 1. メモリに Bitmap 展開せずに、サイズや MimeType

  • Androidのソースコードレビュー(メモリリーク)

    有限であるモバイル端末のメモリを無駄に消費するアプリは悪だ。そんなアプリのソースコードレビュー担当者の目は節穴だ。 と言われないためか否かは知らないけど、Android Developers - Avoiding Memory Leaksでは、Androidアプリを作成する上で、メモリリークが発生するパターンとその対処法を色々と紹介している。(英語) 要点のみを自分が見直し易いようにまとめつつ、説明の足りてない「非staticな内部クラスが駄目な件」について書いてみる。 そもそもメモリリークするん?Java実行環境下では、ガベージコレクタによるメモリ管理が行われているため大抵の場合は意識せずともメモリをいい感じに回収してくれる。だが、ガベージコレクタの動作を妨げるようなコードを書いてしまうと、いつまで経っても解放されるべきメモリが解放されなくなる。これが今回のお題であるJavaにおけるメモ

    Androidのソースコードレビュー(メモリリーク)
  • android のメモリ管理と出会う旅 [後編]

    昨日から NDK (Androidアプリを C/C++ を使って開発する環境) を触り始めましたが、うわーあー超楽しいな!。Javaも新しい事を知るって意味では楽しかったけど、基不自由を強いられるだけの緊縛プレイなので、久々に何の縛りもないのが楽しすぎるったらもう! もうテクスチャまでは出てるので、あとはひたすら Java から C++ に書き換えるだけ。 で、昨日 の続きです。android のメモリのモニターはできるようになったので、いろいろ触りながらメモリ状態を見比べてみたところ、いろんな事が分かりました。 Java触りはじめて1ヶ月そこら、しかもを読まない人の言う事ですから、世間一般とはちょっと考え方が違うかもしれませんが、自分で試した結果そうなったんだから、僕はそれを信じます。そんなお話。 脱!static 宣言! 元来、Java だろうが C++ だろうが、static 変

    android のメモリ管理と出会う旅 [後編]
  • android のメモリ管理と出会う旅 [前編]

    いやっほう。6年ぶりの新しいデジカメ が届いたよ!。でも今日は天気悪すぎなせいもあるけど、えらいノイジーで嬉しくない写真ばっか撮れるんですが、えーこんななの?。晴れてれば嬉しい色で撮れますように。でも広角はすっごい嬉しい。ダムが捗るね! で、なんかすっかりブログも書かない残念な子になりつつありますが、やっとひと段落したのでメモリとの戦いの記録でもまとめておきますか。 判断は俺がするから一覧よこせ なんかね、「android メモリリーク」 とかでぐぐると 「Memory Analyzer を使えばメモリの悩みは何でも解決だよ」 みたいな記事がたくさん出てくるんですが、どうにも僕が知りたい事は人とズレてるようで、しっくり来ません。 Memory Analyzer は、現在 android 上で動いてる全プロセスが使っているメモリを調査して、その中から 「このアプリメモリいすぎじゃね?」 と

    android のメモリ管理と出会う旅 [前編]
  • CacheオブジェクトにはSoftReferenceを | Techfirm Android Lab

    Android、いかがですか。 今日もOut Of Memory、出していますでしょうか。 そんなあなたに朗報です。 少しでもメモリにやさしいプログラムを。 今日はSoftReferenceのお話です。 トレードオフ Androidで(というよりもJavaで)パフォーマンスに最も影響を与えるのはインスタンス生成の部分ではないでしょうか。 ループの中でインスタンスを生成しようものなら、たちまちあなたのUIは機敏さを失うことになるでしょう。 インスタンス生成はGCの源です。ストップザワールドを少しでも避けるためには極力newなどは控えなければなりません。 となると、インスタンスを作らないことが究極なのですが、全く作らないというわけにはいきません。ならば、一度作ったインスタンスは再利用しようではありませんか。 その時に役に立つのがキャッシュです。一度作ったインスタンスはキャッシュに保持し

  • Androidアプリのメモリリークを調査する | eiKatouの日記

    Androidアプリを開発していると、たまにOutOfMemoryに遭遇する。そういう時に便利な、メモリリークの調査方法を紹介する。 以下のサイトを参考にさせてもらった。 Memory Analysis for Android Applications メモリリークを発見!Androidアプリのメモリ解析手法 上記のサイトは、手順がわかりにくい箇所もあったので、補足の意味で書こうと思う。 メモリリークを調査するには? メモリリークを調査する、と言われても、なかなかピンとこない。しかし、やっていることは簡単。 アプリケーションを操作する ガベージコレクション(GC)を走らせる ヒープメモリの状態を取得 ヒープメモリを見る ガベージコレクション(GC)で回収できていないメモリを探す という5つの手順だけ。これで回収できていないメモリがあれば、回収できるように参照を消したりする必要がある(ここが

  • Preview the new Google Groups - Google Groups

  • Androidのプロセスがkillされる基準 : Happy my life

    今回はAndroidLinuxカーネルな話題をひとつ。 AndroidLinuxカーネルには、メモリの空き容量が少なく(ある一定値以下に)なった場合に、プロセスを強制終了(殺す)仕組みが備わっている。 AndroidLinuxカーネルにはその機能が2つ備わっていて、一つがOOM(Out Of Memory) KillerというLinux家での実装と、もう一つLow Memory KillerというAndroid特有の機能として実装されているものがある。 じゃあ、OOM KillerとLow Memory Killerと何が違うのか? その答がAndroid Kernel Features – eLinux.orgのoom handlingに書いてあったので紹介(Thanks @androidzaurus) OOM Killerは、シンプルな機構で空きメモリが足りなくなったらサクっと

  • Androidアプリのメモリリーク対策手法 | Bescottee

    googleAndroid開発者向け ブログに「Memory Analysis for Android Applications」という記事があったため、自分のために訳しました。参考になれば幸いです。エントリを見るうえで、eclipse の基的な使い方を理解している必要があります。 Androidアプリのメモリ解析手法 Dalvikランタイムは、ガベージコレクトしてくれるかもしれませんが、それはメモリ管理を行わなくてもよいというわけではありません。モバイル端末上でのメモリ利用状況は特に注意を払わなければなりません。投稿では、開発するアプリのメモリ利用状況の把握を支援する Android SDK で提供しているメモリプロファイリングツール群のいくつかを紹介させて頂きます。 メモリ利用時の問題はいくつか明らかになっています。例えば、もしあなたのアプリがユーザの画面タッチ操作のたびにメモ

  • 1