GVKun编程网logo

在ASP.NET Web App中查找内存泄漏(在asp.netnet)

13

如果您想了解在ASP.NETWebApp中查找内存泄漏的相关知识,那么本文是一篇不可错过的文章,我们将对在asp.netnet进行全面详尽的解释,并且为您提供关于Android配合Mat工具监听查找内

如果您想了解在ASP.NET Web App中查找内存泄漏的相关知识,那么本文是一篇不可错过的文章,我们将对在asp.netnet进行全面详尽的解释,并且为您提供关于Android 配合Mat工具监听查找内存泄漏的操作方法、ASP.NET Web App和ASP.NET MVC 3 Empty Web App之间的区别?、asp.net – 在Azure Web App中设置EF连接字符串、asp.net-mvc – 在ASP.NET MVC应用程序中使用Entity Framework和Windsor时内存泄漏的有价值的信息。

本文目录一览:

在ASP.NET Web App中查找内存泄漏(在asp.netnet)

在ASP.NET Web App中查找内存泄漏(在asp.netnet)

在WIN SERVER 2008 R2 Enterprise 64 Bit上,我在2.53 Ghz(2 cpu)和8 GB内存的单个生产服务器(虚拟)上承载了7个网站。

Web服务器是IIS 7,所有网站都使用.NET Framework 4.0应用程序池。

我当前的内存使用量是8GB左右的4.16GB,而w3wp.exe是消耗大部分内存使用量(此时大约为1.6GB),其次是使用(1.5GB)的sqlservr.exe的最多进程。

我想要做的是知道哪个网站是7消耗最多的内存,以便我可以看看。

Windows 7清理C ++内存泄漏?

内存仍然可以修复的错误,但为什么?

内存泄漏debugging与windbg没有用户堆栈跟踪

C ++(窗口)中的分配号码及其预测性

使用gflags + ust,进程内存增加更快

我已经尝试了进程资源pipe理器和资源监视器,但是它只能显示w3wp.exe占用的多less,而不是个别网站的使用情况。

有没有一种方法可以指向内存的老板?

使用简单的Win32 :: Unicode :: File readline循环和StrawBerry Perl“内存不足”

也许一个资源没有发布? 什么可能导致这个?

任务pipe理器不同意Process Explorer?

redirectstdio时Linux BASH内存泄漏

在Apache httpd和模块中search内存泄漏

您可以使用Microsoft的“ 调试诊断”工具进行内存转储。

基本过程是:

启动DebugDiag

取消向导

点击“进程”选项卡

选择w3wp

右键单击并选择“创建完整转储”

悄悄地对自己嗤之以鼻,因为你说“倾倒”

一旦转储完成( 再次滑稽 ),点击“高级分析”选项卡

使用2个内存压力分析器脚本查看是否可以看到哪些对象正在使用大量的内存。

我会建议这样做,结合Uri May的答案,否则你可能会浪费很多时间。

您可以配置每个网站使用不同的应用程序池,这样你将有一个w3wp.exe进程为您承载的7个网站的每个网站。 之后,您可以使用下面的这个链接中的工具来找出哪个网站造成泄漏通过跟踪w3wp.exe的PID最大的内存消耗。

在Windows任务管理器,你可以看到哪个应用程序池正在运行每个w3wp.exe只需显示“用户”列。 这是因为每个应用程序池通常都以自己的用户运行。 他们使得在Windows 2012服务器中看到这一点更难 – 您需要先点击“详细信息”选项卡。

Android 配合Mat工具监听查找内存泄漏的操作方法

Android 配合Mat工具监听查找内存泄漏的操作方法

1、Android Studio Profiler查看内存

内部培训做个记录

运行我们的项目,然后一直玩APP。最后在Android Studio Profiler中选择memory。执行如下操作:

会得到如下图示。

从图中可以看出,目前存在47个泄漏情况。点击数字47 会得到app heap内存泄漏的详细类。

某一个类泄漏了17次。

右键到处hprof文件。

2、hprof文件转换

进入到Android SDK的platform-tools目录下 执行如下命令

hprof-conv memory.hprof 11.hprof

3、MAT定位泄漏原因

打开mat软件,选择file 导入刚刚生成的11.hprof文件

点击

输入你需要查看的泄漏类的正则

这儿我输入activity。找到我们自己的activity,这个时候右键该类。选择Gc roots 然后exclude all phantom/weak/soft etc.references(这步操作的目的是排除软弱虚引用,因为我们知道内存泄漏的问题都是由强引用导致的)

从图中可以看出 我们项目有个lifecycleRegister类持有了activity保存在fragmentCallback中,而得不到释放。

4、回到代码排查原因

最后在代码中我看到我们的fragmentCallback一直保存数据,但是没有地方释放,在释放的位置activity.finish()即可。至此解决问题

即堆中存在不再使用的对象,但垃圾收集器无法将它们从内存中删除

到此这篇关于Android 监听查找内存泄漏 配合Mat工具的文章就介绍到这了,更多相关android内存泄漏Mat内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

您可能感兴趣的文章:
  • Android Studio+MAT实战内存泄漏
  • 详解Android内存泄漏检测与MAT使用
  • Android Studio使用Profiler来完成内存泄漏的定位
  • Android内存溢出及内存泄漏原因进解析
  • Android Native 内存泄漏系统化解决方案
  • Android内存泄漏的轻松解决方法
  • Android Handler内存泄漏详解及其解决方案

ASP.NET Web App和ASP.NET MVC 3 Empty Web App之间的区别?

ASP.NET Web App和ASP.NET MVC 3 Empty Web App之间的区别?

我想构建自己的Web框架,我想用C#构建它.我认为最简单的入门方法是使用ASP.NET来处理所有服务器通信的东西.剩下的我想建立自我.我对ASP.NET几乎一无所知. (但是很了解C#,MVC模式和其他Web框架).

在Visual Studio 2010中,我看到了

> ASP.NET Web应用程序
> ASP.NET MVC 2空Web应用程序
> ASP.NET MVC 3空Web应用程序

我认为其中一个应该是一个很好的基础.我只想在一些C#代码中加入一些“切入点”.我从PHP开始,所以我无法在浏览器中加载文件,这有点奇怪.无论如何,我应该使用哪个?普通的ASP.NET Web App和空的MVC 3应用程序有什么区别?如果它是“空的”它不应该使用任何MVC框架,是吗?我只是想确保在走上这条道路之前使用最新最好的“ASP”来处理服务器.

解决方法

也许您不应该从空Web应用程序开始,因为它只是为您提供程序集的引用,但不提供任何示例代码.

ASP.NET Web App是一个非空的Web应用程序(意味着它具有文件的基本设置),旨在与ASP.NET WebForms一起使用.对于教程:http://www.asp.net/web-forms

ASP.NET MVC 2 Empty Web Application是一个空项目,旨在与ASP.NET MVC版本2(当前版本)一起使用.对于教程:http://www.asp.net/mvc

ASP.NET MVC 3空Web应用程序是一个空项目,旨在与ASP.NET MVC版本3(现在是候选版本)一起使用.有关信息:http://www.asp.net/mvc/mvc3

在创建框架之前,深入研究教程,玩游戏,然后才开始构建框架.

关于WebForms vs MVC,这是另一个讨论.我亲自将我的新项目转换为MVC,也许它更适合您的Framework应用程序.

asp.net – 在Azure Web App中设置EF连接字符串

asp.net – 在Azure Web App中设置EF连接字符串

我们有一个ASP.NET(MVC)应用程序,并使用实体框架6连接到我们的数据库. DbContext是以标准方式构建的,它代表我们加载了连接字符串.生成的代码如下所示:
public partial class MyContext : DbContext
{
    public MyContext(string connectionName)
        : base("name=" + connectionName)
    {
    }
}

我们将连接字符串设置在本地的web.config中也以标准方式:

<configuration>
  <connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Metadata=...;provider connection string=&quot;...&quot;" 
         providerName="System.Data.EntityClient" />

当我们将应用程序发布到Azure时,我们导航到Azure Portal,然后浏览到Web应用程序的设置,然后浏览到连接字符串列表.在那里我们添加我们在本地使用的EF连接字符串.当我们重新启动并访问该应用程序时,我们会根据我们选择的连接字符串的类型得到运行时错误.

对于自定义类型,我们得到以下运行时错误:

Keyword not supported: ‘data source’.

对于sql Server或sql数据库,我们得到以下运行时错误:

Keyword not supported: ‘Metadata’.

这真的好像是一个简单的故事,所以我们想知道出了什么问题.

解决方法

问题是转义的引号:& quot.

web.config中的连接字符串具有引号转义,因为它们是以XML属性序列化的.在Azure门户中输入连接字符串时,您应该提供原始未转义的字符串.这样的东西

Metadata = …; provider connection string =“Data Source = …”

David Ebbo的答案很有助于确认环境是按照您的期望设置的.在Visual Studio中通过向导发布时,还要注意.pubxml文件:它也将尝试填充连接字符串.

asp.net-mvc – 在ASP.NET MVC应用程序中使用Entity Framework和Windsor时内存泄漏

asp.net-mvc – 在ASP.NET MVC应用程序中使用Entity Framework和Windsor时内存泄漏

我无法让windsor容器和实体框架一起工作,这可能是由于我自己介绍的一个问题,但最终结果是我得到了可怕的内存泄漏.

我的应用程序设置了EDMX和存储库和服务,那些和objectcontext在我使用的windsor配置文件中设置为perwebrequest.但是,当我查看ANTS内存分析器中的内存使用情况时,我发现尽管确认已调用dispose,但仍然将对象上下文缓存保留为缓存的引用.

每个请求更多的动态代理都会卡在内存中.如果有其他人设法让自己陷入这样的泡菜中并且可以为我提供建议以摆脱它,我将不胜感激.

解决方法

通过将windsor容器的内核上的释放设置更改为:我已设法找到并解决问题:

_container.Kernel.ReleasePolicy = new NoTrackingreleasePolicy();

虽然windsor容器调用perwebrequest组件的dispose方法,但它仍然挂在它们的引用上,这防止它们被垃圾收集.

在这种情况下,它持有引用的对象是ObjectContext类型.不幸的是,尽管处理了这个对象,但是这个对象中缓存的所有动态代理仍然有效地意味着我的数据库的副本(或者至少我正在访问的部分)被添加到内存中,每个请求都会导致它增加.

今天关于在ASP.NET Web App中查找内存泄漏在asp.netnet的分享就到这里,希望大家有所收获,若想了解更多关于Android 配合Mat工具监听查找内存泄漏的操作方法、ASP.NET Web App和ASP.NET MVC 3 Empty Web App之间的区别?、asp.net – 在Azure Web App中设置EF连接字符串、asp.net-mvc – 在ASP.NET MVC应用程序中使用Entity Framework和Windsor时内存泄漏等相关知识,可以在本站进行查询。

本文标签: