我有一个WPF应用程序,其中包括显示大量和小的图像.我的问题是该应用程序使用了大量内存,我无法弄清楚它来自何处.
情节,当强调应用程序时,我在perfmon中得到这个图:
http://www.imagechicken.com/uploads/1244548604007097000.jpg
黑色大行是Process\Private字节,其他行是CLR mem计数器(粉红色是总提交字节)
图中的数字是:
专用字节~350 Mb
承诺字节~100 Mb
我一直在使用WinDbg和其他工具进行大量挖掘,并且他们都报告托管堆栈的行为(!eeheap报告总托管堆栈大约100 Mb)
我一直在寻找像LeakDiag,LDGrapher这样的应用程序但却一无所获.
所以,最后我的问题是,如何继续寻找记忆的去向?
即使只是启动应用程序使用100Mb的承诺字节,但190Mb的私有字节.
参考文献:
我已经在很多网站上阅读了很多相关内容:
Tess Ferrandez:http://blogs.msdn.com/tess/archive/2009/02/27/net-memory-leak-reader-email-are-you-really-leaking-net-memory.aspx
Rico Mariani:http://blogs.msdn.com/ricom/archive/2004/12/10/279612.aspx
MSDN mag:http://msdn.microsoft.com/en-us/magazine/cc163528.aspx
假设系统的总内存消耗(虚拟+物理)是Windows中任务管理器显示的"内存使用"和"VM大小"列的总和,这是正确的吗?
我有NuSOAP网络服务器:...
$server->register('getMembersEvents',
array('date' => 'xsd:string'),
array('Events' => 'tns:Events'),
'urn:my',
false,
'rpc',
false,
'Description'
);
$server->wsdl->addComplexType(
'Events',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array('Event' =>array ('name' => 'Event', 'type' => 'tns:Event')),
array(
'Event' => array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'tns:Event[]')
),
'tns:Event'
);
$server->wsdl->addComplexType(
'Event',
'complexType',
'struct',
'all',
'',
array(
'field1' => array('name' => 'MemberNumber', 'type' => 'xsd:int'),
// ...
'fieldN' => array('name' => 'WebMemberID', 'type' => 'xsd:int')
)
);
Run Code Online (Sandbox Code Playgroud)
一切正常,但响应似乎是:
<SOAP-ENV:Body>
<ns1:getMembersEventsResponse xmlns:ns1="urn:eliza">
<Events xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:Event[2]">
<item xsi:type="tns:Event">
<field1 xsi:type="xsd:int">123</field1>
...
<fieldN xsi:type="xsd:int">123</fieldN>
</item>
<item xsi:type="tns:Event">
<field1 …Run Code Online (Sandbox Code Playgroud) 我似乎无法绕过他们.
据我所知,它是动态地向类添加逻辑.框架内的课程是否为此准备好了?
我为什么要扩展类并在扩展中添加它的功能.我将在全球范围内访问,并且更容易维护.
我读过有4种仿函数类型:
Comparer
Closure
谓词
变压器
我们应该处理它们中的每一个.
ps在vb中有类似的东西吗?
所以我可以说我认为lambda表达式是仿函数.这为我清理了一些东西:)(呵呵)
但我问了这个问题,因为我遇到了另一种类型的fucntors,即这些:
delegate void FunctorDelegate(int value);
class Addition {
FunctorDelegate _delegate;
public Addition AddDelegate(FunctorDelegate deleg) {
_delegate += deleg;
return this;
}
public int AddAllElements(IList< int> list) {
int runningTotal = 0;
foreach( int value in list) {
runningTotal += value;
_delegate(value);
}
return runningTotal;
}
}
Run Code Online (Sandbox Code Playgroud)
然后用这个调用它:
int runningTotal = new Addition()
.AddDelegate(new FunctorDelegate(
delegate(int value) {
if ((value % 2) == 1) {
runningOddTotal += value; …Run Code Online (Sandbox Code Playgroud) 我正在使用UITableView来选择一个(很多)项目.与选择铃声时的UI类似,我想要检查所选项目,而不是其他项目.我想在触摸时选择单元格,然后将其设置为正常颜色(再次,就像铃声选择UI一样).
UIViewController子类是我的表的委托和数据源(不是UITableViewController,因为我还有一个工具栏).
我在cellForRowAtIndexPath:中设置单元格的accessoryType,并在didSelectRowAtIndexPath:中选择单元格时更新我的模型.我可以想到将所选单元格设置为复选标记(并清除前一个单元格)的唯一方法是在didSelectRowAtIndexPath:中调用[tableView reloadData].但是,当我这样做时,单元格取消选择的动画很奇怪(单元格的标签应该出现一个白框).当然,如果我不调用reloadData,则accessoryType不会更改,因此不会出现复选标记.
我想我可以关闭动画,但这似乎很蹩脚.我也玩弄了改变didSelectRowAtIndexPath:中的细胞,但这是一个很大的痛苦.
有任何想法吗?缩写代码如下......
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell* aCell = [tableView dequeueReusableCellWithIdentifier:kImageCell];
if( aCell == nil ) {
aCell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:kImageCell];
}
aCell.text = [imageNames objectAtIndex:[indexPath row]];
if( [indexPath row] == selectedImage ) {
aCell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
aCell.accessoryType = UITableViewCellAccessoryNone;
}
return aCell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:YES];
selectedImage = [indexPath row]
[tableView reloadData];
}
Run Code Online (Sandbox Code Playgroud) SQL Server 2000
我的表:
CARDNO CARDEVENTDATE CARDEVENTTIME
121 20090610 025050
121 20090611 040000
121 20090611 050000
121 20090611 020000
122 20090611 030001
122 20090611 030000
123 20090611 080000
123 20090611 100000
123 20090611 132449
123 20090611 025959
124 20090610 030000
124 20090612 030001
125 20090611 030002
125 20090612 040000
Run Code Online (Sandbox Code Playgroud)
Cardno是独立的表Cardeventdate,cardeventtime是独立的表
从上表中我想获得特定cardeventdate和Cardno的最佳时间和最低时间
对于121,20090611,Top Time是040000,Bottom Time是020000 For 123,20090611,Top Time是080000,Bottom Time是025959 ...就像我需要的那样.
我使用了Min(时间)和Max(时间),但它显示了这样.
对于CardNo - 121 Cardeventdate - 20090611 Min Time - 020000 Max Time - 040000
我不想得到min和Max,我只需要特定Date和Cardno的top和Bottom(或)First和Last time值.
我用过这个查询
SELECT RowNumber = …Run Code Online (Sandbox Code Playgroud) 我想从bash脚本启动后台Python作业,然后使用SIGINT优雅地终止它.这可以从shell工作得很好,但我似乎无法让它在脚本中工作.
loop.py:
#! /usr/bin/env python
if __name__ == "__main__":
try:
print 'starting loop'
while True:
pass
except KeyboardInterrupt:
print 'quitting loop'
Run Code Online (Sandbox Code Playgroud)
从shell我可以打断它:
$ python loop.py &
[1] 15420
starting loop
$ kill -SIGINT 15420
quitting loop
[1]+ Done python loop.py
Run Code Online (Sandbox Code Playgroud)
kill.sh:
#! /bin/bash
python loop.py &
PID=$!
echo "sending SIGINT to process $PID"
kill -SIGINT $PID
Run Code Online (Sandbox Code Playgroud)
但是从脚本我不能:
$ ./kill.sh
starting loop
sending SIGINT to process 15452
$ ps ax | grep loop.py | grep -v grep
15452 pts/3 R 0:08 …Run Code Online (Sandbox Code Playgroud) 我知道这不是一个特别的编程问题,但程序员经常需要做这项工作.
如何使用Liferay门户网站创建一个网站 - 文档在这个基本问题上非常清楚,并且都适用于4.4版本.我使用的是5.2版,文档似乎并不相关.
你知道基本步骤是什么吗?到目前为止,我已经以bruno用户身份登录,可以看到7cogs网站并对其进行编辑.但我现在需要创建自己的网站(对于我的公司)并能够开发portlet以添加到页面的各个部分.
此外,我注意到文档谈论在Eclipse中工作.如果我们的网站都是静态HTML,(我们希望liferay的主要原因是我们可以使用其内容管理工具编辑内容项),那么是否需要Java dev,或者全部都是拖放和点击得到安装.任何指导将不胜感激.
我有一个项目列表(HTML表格行,用Beautiful Soup提取),我需要遍历列表并获得每个循环运行的偶数和奇数元素(我的意思是索引).我的代码看起来像这样:
for top, bottom in izip(table[::2], table[1::2]):
#do something with top
#do something else with bottom
Run Code Online (Sandbox Code Playgroud)
如何使这个代码不那么难看?或者也许是这样做的好方法?
编辑:
table[1::2], table[::2] => table[::2], table[1::2]
Run Code Online (Sandbox Code Playgroud) 我设计了一个C#控制台应用程序,使用OOP设计合并和拆分大文件(大小约4GB).它涉及读/写xml,平面文件和图像.我有读者和作家的课程.
合并时间约为00:12,而分裂时间超过04:30.然后我通过将输出文件分发到子目录而不是使用单个目录,将分割的性能提高到00:50.
我的老板要求我将所有内容转换为静态过程编程,而不是对象.他说00:12合并比较00:50分裂是不平衡的.他希望通过转换为静态来在00:30分钟完成分割.
现在我知道静态调用更快按照此.但是我不同意所有静态都会更好,因为我必须在方法中使用"ref"和"out"参数.
我的问题是:
.net ×2
c# ×2
python ×2
bash ×1
debugging ×1
for-loop ×1
functor ×1
generics ×1
iphone ×1
lambda ×1
liferay ×1
memory-leaks ×1
nusoap ×1
objective-c ×1
oop ×1
performance ×1
php ×1
portal ×1
portlet ×1
sql-server ×1
static ×1
taskmanager ×1
uitableview ×1
web ×1
windows-xp ×1
wpf ×1