メモリ不足とメモリリークの解析サービス

背景

C/C++による開発では、メモリの確保と解放がプログラマの責任です。メモリ管理が不適切だと、他の機能で利用可能なメモリが不足したり、メモリ領域が侵害されたりして、致命的な不具合を引き起こすリスクがあります。
一方、Javaや.NETのような環境では、ガベージコレクションがメモリリークを防ぐため、プログラマがメモリ解放を意識する必要がほとんどありません。また、メモリアドレスを使用したアクセスも発生せず、確保した範囲外のメモリへのアクセスが制限されます。近年では、デスクトップPCやWebアプリケーションで豊富なメモリが利用可能となり、厳密なメモリ管理が求められることが少なくなっています。
しかし、組み込み機器ではメモリの増設が製品コストの増加を招きます。コストが増すと、製品価格の引き上げや利益の削減といった選択を迫られることになります。こうした制約の中では、適切なメモリ管理が製品の安定動作を保証し、コストを抑えた競争力のある価格設定を可能にします。

メモリ関連で発生する不具合について

製品の動作が不安定ではありませんか?

● 突然フリーズ(または再起動)する
● 画面表示が崩れる
● UIの応答が遅くなる
● 通信がタイムアウトする
● 機器が異常に発熱する
● 明確な原因がわからないが、全体的に不安定

これらの現象は、メモリの空き容量が不足したり、バッファオーバーランが発生したりすることで、予期しない動作につながっている可能性があります。メモリ関連の問題は事象と根本原因の関連を見つけにくく、結果として不具合の再現や原因特定が困難になることもあります。

そもそもメモリ不足でお困りではありませんか?

● 長時間の連続稼働が求められるが、メモリ不足で再起動が必要になる

▶ 特定の操作を繰り返すことで徐々に空きメモリが減少する

▶ 音楽や動画の連続再生により、空きメモリが減少する

▶ 他機器との通信が発生すると、空きメモリが減少する

▶ 明確な原因がわからないが、気づくと空きメモリが減少している


● 特定の機能で一時的に必要なメモリが確保できず、機能が正常に動作しない

▶ 通信のためのバッファが確保できず、通信が不安定になる

▶ 画像を読み込むためのバッファが確保できず、画像が表示されない


システム全体のメモリ利用を最適化し、十分な空きメモリを確保することで、長時間の連続稼働や一時的に消費する大容量のメモリ確保が可能な状態を維持することが重要です。

サービス概要

主にC/C++での開発プロジェクトの支援を行います。 プロジェクトのあらゆるフェーズで、不具合の解析を行います。 一般的な不具合の解析を行うとともに、特にメモリリークに代表されるメモリ関連の問題を解析し改善案を提示いたします。

類似不具合の検出

単体テスト、結合テストなどを問わず、テスト後に検出された不具合に対するご支援として、以下を行います。

● 解析困難な不具合の解析と改善案の提示
● 潜在する類似不具合の検出

ツールの導入支援

上記から派生して、解析作業の自動化が有効であれば、有料/無料とわず解析ツールの導入をご提案します。 その結果、解析作業によって得られたノウハウを開発チームに展開します。

独自ツールの導入支援

解析作業によって得られたノウハウの自動化をご支援します。 また、プロジェクトの要件定義から参画し、効率よく不具合を解析するための、ロギングの仕組みや解析の仕組みを立案します。

関連リンク