正如本文所述,关于在IDisposable对象上使用的用法,它说了一个有趣的词:
...使用块,在块结束后的某个时间自动调用Dispose方法.(它可能不是立即的;它取决于CLR.)
有趣的是" 它可能不是立即的;它取决于CLR ".任何人都可以提供更多细节吗?因为我们有一些奇怪的情况下,似乎在代码中使用(新MyDisposable()){...},块结束}后它不立即呼吁MyDisposable例如Dispose方法,但一段时间后.
更新:结论对我来说,在我看来,我在其他地方有问题.我认为可以在使用块结束后的某个时间调用Dispose方法.但是当它不是那样的时候,我必须在我的代码中的其他地方找到问题.谢谢你的回复!
故事:
我们在.NET 2.0应用程序中面临非托管内存泄漏.启动后的进程消耗大约150MB(大部分是.NET托管,对象状态等).经过大约12个小时的运行过程消耗高达800MB,在接下来的12个小时后,进程大约有1.8GB的RAM.我刚试过JetBrains .NET内存分析器,ANTS,.NET内存分析器(以及市场上可能有的2个下一个内存配置文件)这些都没有帮助我,因为我后来检测到我们的进程消耗了非托管区域中未管理的大量内存.为了检测这一点,我使用了具有计数器的Perf监视器:私有字节(进程)和所有堆中的#字节(.NET CLR内存),其中专用字节消耗了进程分配的所有内存的大约90%.这就是我切换到非托管调试的原因.
DebugDiag:所以我在进程上运行debugdiag并获得完全转储,这里是它的快照:
mscorwks.dll(一个已知的Windows内存管理器)负责781,73 MB的未完成分配.这些分配似乎源自以下模块和功能:
ntdll.dll(一个已知的Windows内存管理器)负责98,24 MB的未完成分配.这些分配似乎源自以下模块和功能:
按分配计数排名前4位的功能
按分配大小排名前4位的功能
有趣的日志发现:
功能细节
Function mscorwks!EEVirtualAlloc+15b
Function mscorwks!EEHeapAlloc+15b
Function mscorwks!CExecutionEngine::CheckThreadState+fe
Function mscorwks!CLRMapViewOfFileEx+4a
我希望有人向我推进正确的方向如何从这个转储中发现内存泄漏?我能够将dump装入windbg并运行标准的windbg命令集,但我不知道哪一个是能够隔离泄漏的正确命令.
如果有人想帮助我,我可以提供完全转储.
实现 html+js 时钟计时器(jsfiddle示例),我在向后和向前更改操作系统时间时发现问题。
让我们有这个html:
<div id="time">-</div>
Run Code Online (Sandbox Code Playgroud)
和JS代码:
var time = document.getElementById('time');
function iteration() {
time.innerHTML = new Date().toString();
}
setInterval(iteration, 100);
Run Code Online (Sandbox Code Playgroud)
假设您在下午 2:22 开始页面。标签显示正确时间。
现在将操作系统本地时间向后 1 小时更改为 1:22PM,现在 JSnew Date()
正确返回更改后的时间 1:22PM。
接下来将操作系统本地时间向前更改为实际日期 - 下午 2:22,现在 JSnew Date()
不会返回下午 2:22,而是返回旧的下午 1:22。所以在我看来,它不能正确处理本地系统时间的更改(仅向前?)。
似乎仅在 Google Chrome(37.0.2062.124 m(64 位))中存在问题。在 Internet Explorer 和 Firefox 中,JSnew Date()
返回正确的值。
更新:有谁知道如何使用 JS 代码“修复”Google Chrome 的这个问题?
我发现了一篇名为LearnVSXNow的旧文章和第30部分- Visual Studio中的自定义编辑器.有样本项目的博客项编辑器,显示如何使此文件类型的扩展名(.blit)此示例使用项目自定义用户界面编辑器指定自定义文件类型VSXtra,这是书面的Visual Studio 2008.
有人能指出我的一些教程,操作方法,或者如何为Visual Studio 2010做同样的事情?我的目标是在visual studio 2010中注册自定义文件类型扩展名(例如*.myext1),并指定我自己的自定义UI设计器(WinForms,派生自UserControl)来直观地处理此类文件的编辑内容.
我找到了一些样本,但每个样本只显示代码文本编辑器的变化(突出显示一些单词等).但是我希望在其中显示我自己的用户控件的工具窗口.
PS:使用我自己的usercontrol在其中创建自定义工具窗口的一部分是没有问题的,我使用VSPackage Builder项目模板来构建并在visx中注册它.我的问题是如何注册自定义文件类型以使用此自定义工具窗口来编辑文件.