1

我正在使用 ASP.NET 开发一个 Web 应用程序。我有一个名为“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;
}

在一天中,新对象被添加到每个 ArrayList。在过去的几天里,突然其中一个 ArrayList 变为 null,因此整个站点停止工作。

我无法确定为什么这变为空。

是不是 ArrayList 达到了最大数量?例如,现在它有超过 150.000 个对象。

在 Global.asax 文件的 Application_Error 方法中,我添加了一段代码,该代码将每个错误作为日志存储在 txt 文件中。但是,当时没有错误。

关于为什么会发生这种情况的任何建议?

4

1 回答 1

2

只要 ASP.NET 工作进程存在,类的静态字段就存在。一旦 ASP.NET 工作进程被回收,您将丢失所有静态数据。

于 2012-12-12T23:20:42.393 回答