2012-03-29 5 views
0

すべてを解放します。最初にやったことは、system.gc()を実行していたことです。ただし、ガベージコレクタが動作することは保証されていません。コードが呼び出されたときに即座にそのラムが解放される方法を教えてください。また、あなたはウィジェットをクリックするとRAMを解放するアプリケーションはどのようにこのタスクを達成するのですか?アンドロイドラムは、私は、データ集約的な操作のための私のアンドロイドのRAMを解放しても、ユーザーが望んでいるときにRAMを解放できるようにしたいと思い、/ガベージコレクション</p> <p>を

これはもっと良い方法ですね。手動でAndroid OSのようなメモリを手動で解放するにはどうすればよいですか?

Thxを

+0

ごみがない場合はどうなりますか?これ以上参照されないメモリは解放できません。そのような保証は存在できません(弱いフォームは依然としてVMに大きな制限があり、最終的に効率を低下させます)。 – delnan

+0

vmが必要なときにRAMを解放します。したがって、すべての目的および目的のために、ライブオブジェクトに割り当てられていないすべてのメモリが常に利用可能です。私は、あなたの操作やユーザーがこれを達成することにより、(もし可能であれば)かなりのメリットを受けることは間違いないと思っています。 – jpm

+0

ここには事があります。私はramを解放しようと試みてsystem.gc()と呼ばれるアプリを持っています。通常は何も起こりませんが、ラムを解放する別のアプリのウィジェットをクリックすると、フリーラムが100%増加し、UIの応答性が向上します。 –

答えて

3

あなたはこれを行う必要はありません。あなたが現在利用可能なものより多くを必要とするならば、アンドロイドはメモリを解放するために優先順位の低いアプリを殺すでしょう。

+0

だから、どのようにいわゆるフリーメモリのアプリはこれを行うのですか?フリーラムの明確な変更とUIの応答性の向上があります。 –

+0

プロセスを殺すだけです。しかし、私が言ったように、実際には手動で行う必要はありません。なぜなら、Androidがまれにすぐにあなたのためにやってくれるからです。 – joni

+0

ビットマップを操作しているときにそうではありません。あなたは記憶がなくなり、強制的に閉じるでしょう。ただし、手動でRAMを解放すると問題なく実行できます。ですから、もっと良い質問は、OSのように手動でRAMを手動で解放する方法です。 Thx –

1

Androidの理論は、優先度の高い別のプロセス(つまり現在のフォアグラウンドプロセス)がより多くのメモリを必要とするときに、実行中のアプリケーションがコールバックメカニズムによってメモリを解放する必要があるということです。さらに、メモリ要求がさらに増加すると、OSは他のアプリケーションを強制終了させます。

したがって、アプリケーションでシステムのすべてのメモリを実質的に使用できるようにするには、フォアグラウンドに留まるようにするか、他の方法よりメモリ要求が優先されるようにする必要がありますメモリの要求(残念ながら、後者の部分が正確にどうなるかは言えませんでした)。

特定のアプリケーションの外でメモリを解放するために手動で行うことはできません。 OSは正しいことをしています。メモリが必要なので、アプリケーションは「すべての重要でないデータを削除します」と指示します。その後、より多くのメモリが必要な場合、失われるように指示します。メモリを解放するための手動アプローチは、基本的に同じことをします。

編集:他の "メモリフリー"アプリケーションが何をしているのか不思議に思います。答えは、彼らは手動でアプローチし、OSが実行しているのと同じことを実行していることです。実行中のプロセスにシグナルを送ります。これが不必要な理由は、あなたがそれを必要とする前に、無料のラムが実際にあなたに何も役に立たないということです。余分なスペースが必要になる前に、OSがこの作業を行います。これにより、絶対に必要とされる前にプロセスが強制終了されることはありません。

0

Androidにガベージコレクタがあります。 iOSではありません。

+0

しかし、iOSアプリケーション用コンパイラの実際のバージョンは次のとおりです。https://developer.apple.com/technologies/ios5/(Automatic Reference Counting) – joni

+0

downvoteの場合はコメントを残してください。 – EGHDK

関連する問題