小编Rob*_*ser的帖子

减少.NET应用程序的内存使用量?

有哪些提示可以减少.NET应用程序的内存使用量?考虑以下简单的C#程序.

class Program
{
    static void Main(string[] args)
    {
        Console.ReadLine();
    }
}
Run Code Online (Sandbox Code Playgroud)

x64的发布模式下编译并在Visual Studio外部运行,任务管理器报告以下内容:

Working Set:          9364k
Private Working Set:  2500k
Commit Size:         17480k
Run Code Online (Sandbox Code Playgroud)

如果它只为x86编译它会好一点:

Working Set:          5888k
Private Working Set:  1280k
Commit Size:          7012k
Run Code Online (Sandbox Code Playgroud)

然后,我尝试了以下程序,它执行相同但尝试在运行时初始化后修剪进程大小:

class Program
{
    static void Main(string[] args)
    {
        minimizeMemory();
        Console.ReadLine();
    }

    private static void minimizeMemory()
    {
        GC.Collect(GC.MaxGeneration);
        GC.WaitForPendingFinalizers();
        SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle,
            (UIntPtr) 0xFFFFFFFF, (UIntPtr)0xFFFFFFFF);
    }

    [DllImport("kernel32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    private static extern bool SetProcessWorkingSetSize(IntPtr process,
        UIntPtr minimumWorkingSetSize, UIntPtr maximumWorkingSetSize);
}
Run Code Online (Sandbox Code Playgroud)

在Visual Studio外部的 …

.net c# memory optimization memory-optimization

107
推荐指数
6
解决办法
7万
查看次数

WPF在.NET Framework 4.0中的启动速度很慢

我注意到如果我为任何CPU/x64构建我的WPF应用程序,启动(大约20秒)或加载新控件需要花费的时间比在x86上启动(在发布和调试模式下) ,在VS的内部或外部.甚至最简单的WPF应用程序也会出现这种情况.在这个MSDN线程中讨论了这个问题,但没有提供答案.这只发生在.NET 4.0中 - 在3.5 SP1中,x64与x86一样快.有趣的是,微软似乎知道这个问题,因为VS2010中新的WPF项目的默认值是x86.

这是一个真正的错误还是我做错了?

编辑:可能与此相关:C#.NET 4.0中的慢速数据绑定设置时间.我正在大量使用数据绑定.

.net wpf performance 64-bit .net-4.0

36
推荐指数
1
解决办法
2万
查看次数

Visual Studio:如何使一个解决方案依赖于另一个?

是否有可能在VS中制定解决方案依赖(即包括)整个其他解决方案?我见过一些关于"解决方案文件夹"的东西,但这些似乎并不是一回事......?谢谢!(顺便说一下,我正在使用VS 2008)

dependencies projects-and-solutions visual-studio-2008 visual-studio

28
推荐指数
3
解决办法
2万
查看次数

Python ElementTree默认命名空间?

有没有办法在python ElementTree中定义默认/未固定的命名空间?这似乎不起作用......

ns = {"":"http://maven.apache.org/POM/4.0.0"}
pom = xml.etree.ElementTree.parse("pom.xml")
print(pom.findall("version", ns))
Run Code Online (Sandbox Code Playgroud)

这也不是:

ns = {None:"http://maven.apache.org/POM/4.0.0"}
pom = xml.etree.ElementTree.parse("pom.xml")
print(pom.findall("version", ns))
Run Code Online (Sandbox Code Playgroud)

这样做,但后来我必须为每个元素添加前缀:

ns = {"mvn":"http://maven.apache.org/POM/4.0.0"}
pom = xml.etree.ElementTree.parse("pom.xml")
print(pom.findall("mvn:version", ns))
Run Code Online (Sandbox Code Playgroud)

在OSX上使用Python 3.5.

编辑:如果答案是"不",你仍然可以获得赏金:-).我只想要一个花费大量时间使用它的人明确的"不".

python xml namespaces elementtree python-3.x

19
推荐指数
2
解决办法
7314
查看次数

从C#中不断增长的文件中读取?

在C#/ .NET(在Windows上)有没有办法使用文件流读取"增长"文件?打开文件流时文件的长度将非常小,但该文件将由另一个线程写入.如果/当文件流"赶上"到另一个线程时(即Read()返回0字节读取时),我想暂停以允许文件缓冲一点,然后继续读取.

我真的不想使用a FilesystemWatcher并继续创建新的文件流(如日志文件所建议的那样),因为这不是一个日志文件(它是一个即时编码的视频文件),性能是个问题.

谢谢,
罗伯特

.net c# windows streaming filestream

16
推荐指数
2
解决办法
6497
查看次数

为什么java有"String"类型而不是"string"?

包装类很好,它们的目的也很好理解.但为什么我们省略原始类型?

java string reference-type primitive-types

16
推荐指数
2
解决办法
2万
查看次数

.NET Framework - 可能的内存泄漏类?

就在前几天,我正在调查内存泄漏,该应用程序在两分钟内将应用程序从大约50MB膨胀到大约130MB.事实证明问题出在ConcurrentQueue类.在内部,该类存储数组的链接列表.当一个项目从ConcurrentQueue出队时,数组中的索引会被碰撞,但该项目仍保留在数组中(即它未设置为null).在足够的排队/出队之后,整个阵列节点被丢弃,因此从技术上讲它不是泄漏,但是如果在ConcurrentQueue中放置大对象,这可能会很快失控.文档没有记录这种危险.

我想知道基类库中还有其他潜在的内存缺陷吗?我知道Substring one(也就是说,如果你调用substring并保持结果,整个字符串仍将在内存中).你遇到过的其他人吗?

.net c# memory-leaks

16
推荐指数
2
解决办法
2327
查看次数

绘制有向非循环图:最小化边缘交叉?

以树形式在DAG中布置顶点(即顶部没有内边的顶点,顶点仅依赖于下一层上的顶点等)是相当简单的,没有图形绘制算法,如Efficient Sugiyama.但是,是否有一个简单的算法可以最大限度地减少边缘交叉?(对于某些图形,可能无法完全消除边缘交叉.)图片说千言万语,所以有一种算法可以提示没有交叉边缘的东西.(与此相比).

编辑:结果

我已经接受了Senthil的建议graphviz/dot - 快速浏览文档确认它很容易用作库或外部工具,并且输出格式非常容易解析.但是,我最终选择使用GraphSharp,因为我已经在使用.NET等(虽然它绝对没有dot那么强大).结果是"足够好",并且通过一点边缘路由和调整可以做得更好(模糊文本是因为3.5 WPF).

自动布局图http://public.blu.livefilestore.com/y1pEY8I95GtlzcxZzhDMhhKoUyejT_sVVZ4jlsDK2fdl6XAR4WV4-yuSesY6chXokmAZxdJXZ4Bv674TqwpT1-fOg/dag3.gif

这是完整的 C#代码(这是引用QuickGraph或GraphSharp的所有代码 - 是的;就这么简单):

internal static class LayoutManager
{
    private const string ALGORITHM_NAME = "EfficientSugiyama";
    private const bool MINIMIZE_EDGE_LENGTH = true;
    private const double VERTEX_DISTANCE = 25;
    private const double LAYER_DISTANCE = 25;
    private const double MIN_CANVAS_OFFSET = 20;

    public static void doLayout(GraphCanvas canvas)
    {
        // TODO use a background thread
        // TODO add comments
        canvas.IsEnabled = false;
        canvas.Cursor …
Run Code Online (Sandbox Code Playgroud)

c# algorithm wpf graph graph-drawing

15
推荐指数
2
解决办法
8780
查看次数

Visual Studio:键入后自动插入空格if(

我们有一个代码样式检查器,它在每次签入之前运行,要求C#if语句的格式如下:

if (condition)
Run Code Online (Sandbox Code Playgroud)

但是,我的肌肉记忆已经开发用于打字:

if(condition)
Run Code Online (Sandbox Code Playgroud)

有没有办法让Visual Studio 2010自动插入该空间,如果我输入if而没有它?我知道你可以设置它,当你粘贴代码时,它会自动执行此操作,但不会在键入时.谢谢!

c# coding-style code-formatting visual-studio-2010 visual-studio

12
推荐指数
2
解决办法
1万
查看次数

在maven依赖项中显示省略的版本:树?

在Eclipse中,当我转到Maven Dependency Hierarchy页面时,我得到输出,指出导致版本被忽略的冲突:

eclipse maven版本

但是,如果我使用dependency:tree,那就省略了,我只看到实际使用的evrsions:

|  +- commons-httpclient:commons-httpclient:jar:3.1:compile
|  +- commons-codec:commons-codec:jar:1.4:compile
|  +- commons-io:commons-io:jar:2.4:compile
|  +- commons-net:commons-net:jar:3.1:compile
|  +- javax.servlet:servlet-api:jar:2.5:compile
Run Code Online (Sandbox Code Playgroud)

后来实际引用的版本......

+- commons-collections:commons-collections:jar:3.1:compile
Run Code Online (Sandbox Code Playgroud)

有没有办法获得依赖:树输出省略冲突的版本?

谢谢!

java eclipse pom.xml maven maven-dependency-plugin

11
推荐指数
1
解决办法
1632
查看次数