1

ASP.NET を使用して Web アプリを作成しています。Singleton パターンを使用する「Sistema」というクラスがあります。

Sistema のインスタンスが作成されると、データベース接続が開かれ、後で使用できるようにいくつかの静的情報を複数の ArrayList にロードするプロセスが実行されます。

private ArrayList list1;
private ArrayList list2;
private static Sistema instance;
private Sistema()
{
    OpenDataBase();
    list1 = LoadStaticInformationFromDataBase();
    list2 = LoadOtherStaticInformationFromDataBase();
}

public static Sistema GetInstance()
{
    if (instance == null)
    {
        instance = new Sistema();
    }
    return instance;
}

1 日を通して、新しいオブジェクトが各 ArrayList に追加されます。ここ数日の間に、これらの ArrayList の 1 つが突然 null になり、その結果、サイト全体が機能しなくなることが発生しました。

これが null になる理由を特定できませんでした。

ArrayList が最大量に達している可能性はありますか? たとえば、現在、150.000 を超えるオブジェクトが含まれています。

Global.asax ファイル内の Application_Error メソッドに、すべてのエラーをログとして txt ファイルに保存するコードを追加しました。ただし、その時点でエラーはありません。

なぜこれが起こっているのかについての提案はありますか?

4

1 に答える 1

2

クラスの静的フィールドは、ASP.NET ワーカー プロセスが存在する限り存在します。ASP.NET ワーカー プロセスがリサイクルされるとすぐに、すべての静的データが失われます。

于 2012-12-12T23:20:42.393 に答える