在我的应用程序中使用对象生命周期跟踪运行VS2010探查器后,我在特定的类上有这个:
实例数 ---------- 1 418 276
%总实例---------------------%5.8
分配的总字节数----- - 158 846 912
%总字节数--------------------------%5.94
Gen 0实例收集--------- 5 196
收集第1组实例-------- 54 894收集
第2组实例 ---- 747 874
结束活动 --------- 610 312
Gen 0字节收集------ ----- 581 952
Gen 1 Bytes Collected --------- 6 148 128
Gen 2 Bytes Collected --------- 3 761 888
正如你所看到的,所有创建的实例中有一半最终主要是第2代,而另一半则一直活着直到应用程序结束.[ 哈,哈,哈,哈,活着,活着...... - > 对不起,我无法抗拒...... ]
困扰我的是这些实例的生命周期非常短(它基本上是一个数据域类 - 可能是一个结构体,但我更喜欢将它作为一个类来"激活"GC).
这些实例是通过读取非常大的二进制文件(每行是一个类/一个记录)创建的,并通过委托/事件通过一个小型队列传递给基本上只是读取它的工作者,将它放入队列(非常经常出列) ,然后终止(后台工作人员正常结束).我想当工人不再存在时,事件会被取消订阅.
那么,有没有办法确定这些引用隐藏在哪里?因为如果他们不是GC,他们仍然被引用到某个地方,但如何确定?我厌倦了猜测和尝试这么多的假设,如果有人有更合理的指导方针或公平的清单和/或工具/精确的探查器的地方,我欢迎它.
通过DGML 回答Visual GCRoot的补充资源 - 感谢Richard Szalay
此外,来自Chris …
我有一个Common项目,我在其中添加了QueryStringNames的公共常量.
我知道一般常量应该是内部的或私有的,但我需要公共常量,因为我想允许全局访问查询字符串名称,会话密钥等.
我知道有3种解决方案,但它们都有一个重要的问题.调用程序集将包含my常量的副本,这意味着如果我必须更改常量值,我将必须编译我的Common程序集和调用程序集程序!
1) public const string ConstName = "a value";
2) public readonly string ConstName = "a value";
3) To be stored in a public resource file.
Run Code Online (Sandbox Code Playgroud)
除了将它们存储在web.config文件(没有intellisense)之外,在C#中定义公共常量的最佳方法是什么?
我在WPF中编写了一个带有按钮和滑块的应用程序.我想为按钮创建一个触发器,当滑块值大于另一个值时,它会将按钮的'IsEnable'属性设置为false .现在我有:
<Style x:Key="zoomOutButton" TargetType="Button" BasedOn="{StaticResource ResourceKey=buttonStyle}">
<Style.Triggers>
<DataTrigger Binding="{Binding CurrentAltitude}" Value="24000">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
但我想设置isEnable时不是当CurrentAltitude的值等于24000,而是当它等于或大于24000时.有什么想法吗?
我们正在尝试在IIS Express 7.5(7.5.1046)中托管WCF服务.IIS Express正常启动,但在尝试连接到我们的.svc文件时,我们收到一条消息"无法加载DLL'nativerd.dll'的异常:找不到指定的模块.(HRESULT异常:0x8007007E)" .
我们搜索了这个dll,它出现在%WINDIR%\ system32\inetsrv \nativerd.dll中.我们使用的applicationHost.config文件基于IIS Express在用户目录中安装的模板.
系统将Windows 7作为操作系统,配置Visual Studio 2010 SP 1和IIS 7.5以运行WCF应用程序.
有人遇到过同样的问题吗?IIS可能对IIS Express安装有任何影响吗?
我是XML编码的新手.我有一个XML文件,使用XSD工具生成Schema文件,然后使用Xsd2Code工具生成类文件.
现在我有一个名为Timesheet.Designer.cs的文件,其中包含所有类信息和序列化方法.我可以在项目中使用相同的文件,还是将其保存为基类,并使用Timesheet.cs生成一个单独的文件来访问此类和修改?任何人都可以向我指出一个很好的教程或示例,它展示了如何在我的应用程序中使用它来读取和写入XML文件?
我有许多XML文件中的complexType元素.因此,该工具也为所有这些ComplexTypes生成了不同的类.
如果有人已经有一些代码,请在此处发布.
我正在建立我的第一个cron工作而且它不起作用.我认为问题可能是相对路径问题.
鉴于cron工作:
*/1 * * * * python2.7 /home/path/to/my/script/my_script.py
Run Code Online (Sandbox Code Playgroud)
和my_script.py:
import sqlite3
db = sqlite3.connect('my_db.db')
cur = db.cursor()
...
Run Code Online (Sandbox Code Playgroud)
我如何确保my_script.py
查找my_db.db
在/home/path/to/my/script/
(相同的目录房子my_script.py
),而不是任何目录的crontab的生活?
其他建议也是受欢迎的.
注意 - 我认为问题可能是一个路径问题,因为当我尝试从除了以外的任何位置运行my_script.py
使用时,我收到"无法打开数据库"错误.python2.7 /home/path/to/my/script/my_script.py
/home/path/to/my/script/
我正试图找到解决问题的方法.将我的.net 4.0 C#Win服务项目更改为任何CPU/Release构建配置后,我收到此编译时错误:
Cannot specify /main if building a module or library
它将违规文件标识为"CSC",生成它的项目是我的服务项目(不是我在解决方案中附带的代码库).我查看了项目文件和配置编辑器设置但尚未能确定问题的根源.
有没有其他人经历过这个节目停止问题?
我是一个php新手(但是其他语言的长期开发人员),我正在尝试"PHP,MySQL和JavaScript"中的一些示例数据库连接.它显示了一个包含数据库连接变量(服务器名,用户名,密码,数据库等)的示例文件.我有一个php文件,它有一些我写的函数,其中一个有一些SQL查询.无论出于何种原因,在该文件中调用require_once不会输出任何错误(我已经配置了E_ALL),但我的数据库php文件中的那些变量是null.
我用该函数中的所有变量调用了一个回声,看看它到底发生了什么,当然它打印出一个空白行.世界上什么超出了范围?我不得不错过一些简单的东西.
这是我正在做的一个例子
db_login.php
<?php
$db_server = 'localhost';
// ....
?>
Run Code Online (Sandbox Code Playgroud)
的functions.php
<?php
require_once('db_login.php');
function myfunction() {
echo "$db_server";
// ...
}
?>
Run Code Online (Sandbox Code Playgroud)
叫我疯了,但这应该不够简单吗?
下面的一行显示在我的一个javascript文件中,它在Razor中的语法是什么.
var initialData = <%= new JavaScriptSerializer().Serialize(Model) %>;
Run Code Online (Sandbox Code Playgroud)