开发者

ASP.NET MVC 3 - WebDev Server Leaking Memory with Fluent NHibernate?

I have an ASP.NET MVC 3 app that has an MS SQL Server 2008 remote database, connected via Fluent NHibernate. I have another app which is making various GET requests to a URL that triggers a new item being added to the database. Everytime an item is added, my local web server's memory is growing by about 100k.

    public ActionResult AddItem(string text)
    {
        using (var DatabaseSession = new FluentDatabase().Session)
            using (var tx = DatabaseSession.BeginTransaction())
            {
                Item item = DatabaseSession
                  开发者_开发知识库           .QueryOver<Item>()
                             .Where(x => x.Text == text)
                             .SingleOrDefault();
                if (item == null)
                       item = new ... // initialize

                item.Text = text;

                DatabaseSession.SaveOrUpdate(item);
                tx.Commit();
                DatabaseSession.Flush();
            }

        return RedirectToAction("Index");
    }

I know this isn't the ideal way to add items to a database, but this is just a test of some other functionality. After about 1000 calls to this method, the server is taking up over 1gb of data! Shortly after, I run out of memory and it crashes. It doesn't make much sense, since all of the items should be getting garbage collected. Is there something I'm missing here?


The easiest way to find the problem is to use some memory profiler, they will show you which objects are staying in the memory and who's holding them:

  1. MemProfiler, paid, http://memprofiler.com/

  2. CLR Profiler, free, Microsoft CLR Profiler for .Net 4 - http://www.microsoft.com/downloads/en/details.aspx?FamilyID=be2d842b-fdce-4600-8d32-a3cf74fda5e1 , CLR Profiler for .Net 2 and 3.5 - http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a362781c-3870-43be-8926-862b40aa0cd0 . And here is a documentation for it - http://msdn.microsoft.com/en-us/library/ff650691.aspx

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜