JXTA や PjSIP などの多くのライブラリはフットプリントが小さいと聞きました。これは、リソースの消費量が少ないことを示していますか、それとも何か他のことを示していますか?
6 に答える
フットプリントは、コンピューターの RAM メモリ内でアプリケーションが占有するサイズを示します。
メモリ消費について話すとき、フットプリントは異なる意味を持つ場合があります。私の経験では、多くの場合、メモリ フットプリントには、ヒープに割り当てられたメモリ (動的メモリ) やディスクから読み込まれたリソースは含まれません。これは、動的割り当てが一定ではなく、アプリケーションやモジュールの使用方法によって異なる可能性があるためです。「設置面積が小さい」または「設置面積が大きい」と報告するときは、通常、必要なスペースの定数または最高の測定値が求められます。
たとえば、画像エディターのフットプリント レポートに動的メモリを含める場合、フットプリントは、ユーザーがアプリケーションにロードした画像のサイズに完全に依存します。
サード パーティ ライブラリのコンテキストでは、ライブラリの作成者は、アプリケーション バイナリに必要以上のコードをリンクしないようにすることで、ライブラリの静的メモリ フットプリントを最適化できます。たとえば C でこれを行うために使用される一般的な方法は、ライブラリ関数を個別の c ファイルに配布することです。これは、ほとんどの C リンカが、呼び出す関数だけでなく、c ファイルのすべてのコードをアプリケーションにリンクするためです。したがって、c ファイルに 1 つの関数を配置すると、呼び出し時にリンカーがアプリケーションに組み込むのはそれだけです。c ファイルに 5 つの関数を配置すると、そのうちの 1 つしか使用しない場合でも、リンカーはおそらくそれらすべてをアプリにリンクします。
以上のことから、フットプリントの一般的な (学術的な) 定義には、あらゆる種類のメモリ/ストレージの側面が含まれます。
ウィキペディアのメモリ フットプリントの記事から:
メモリ フットプリントとは、実行中にプログラムが使用または参照するメイン メモリの量を指します。
これには、(大部分) プログラム命令 (場合によっては定数) を含むコード セグメント、データ セグメント (初期化されたものと初期化されていないもの)、ヒープ メモリ、コール スタック、および次のような追加のデータ構造を保持するために必要なメモリなど、あらゆる種類のアクティブなメモリ領域が含まれます。シンボルテーブル、デバッグデータ構造、開いているファイル、現在のプロセスにマップされた共有ライブラリなど、プログラムが実行中に必要とし、実行中に少なくとも 1 回読み込まれます。
一般に、これは使用するメモリの量です。つまり、実行時にメモリに残す「フットプリント」です。ただし、ハードドライブで占有する容量を参照することもできますが、最近ではあまり問題になりません.
アプリを作成していてメモリに制限がある場合は、プロファイラーを実行して、プログラムが使用している量を追跡することを検討してください。
リソースを参照します。特にメモリ。実行時に必要なメモリ量が少なくなります。
はい、メモリやディスクなどのリソース
コンピューティングにおけるフットプリント、つまりコンピュータ プログラムまたはコンピュータ マシンのフットプリントは、プログラム、プロセス、コードなどの占有デバイス メモリと呼ばれます。