小编Dio*_*Dio的帖子

长时间运行Windows服务与内存泄漏?或者看起来像一个?

这听起来有点奇怪,但我不确定我的进程是否有内存泄漏,我希望得到一些信息.

我最近被分配了一个调查,为什么生产中的Windows服务大约消耗了一个ram(它运行的服务器有8个演出).这超出了我作为开发人员的经验,但我很有机会了解垃圾收集在msdn和其他来源上的工作方式.但是在这一点上我非常困惑/何时/集合实际运行,在这一点上,我读过的文章都很模糊.

1)我发现了一个特定的操作,每次执行时内存增加~30kb.2)我非常仔细地检查了代码,并认为我正在关闭所有内容,并删除引用3)我使用了几个内存分析器,所有这些似乎都表明我的旧对象已链接到gc.4)如果我让这个过程绝对闲置几天,内存使用量会突然下降到~8兆

基于此,我甚至不确定是否有内存泄漏.鉴于GC是一个昂贵的过程,我是否有可能因为仍然有免费的ram而在生产中增长到1 gig,并且获得它比运行GC"更便宜"?特别假设这项服务每秒运行~6次?如果是这种情况,我有哪些选择?我理解我无法强制触发GC,我有什么度假胜地吗?

感谢您提供的任何输入,我意识到内存泄漏和csharp中的gc是一个深刻的话题,如果有关于这个主题的特别有用的阅读,我也很高兴能够这样指出.

c# garbage-collection memory-leaks

6
推荐指数
1
解决办法
4709
查看次数

Fortran中的OpenMP

我很少使用fortran,但是我的任务是将遗留代码重写为并行运行.我正在使用gfortran作为我的编译器选择.我在https://computing.llnl.gov/tutorials/openMP/以及其他一些资源中找到了一些优秀的资源.

我的问题是,在我添加任何OpenMP指令之前,如果我只是编译遗留程序:

gfortran Example1.F90 -o Example1

一切正常,但即使不添加指令,也可以打开openmp编译器选项:

gfortran -openmp Example1.F90 -o Example1

当我运行遗留程序时,最终会出现Segmentation故障.使用我编写的较小的测试程序,我已成功使用在多个线程上运行的-openmp编译其他程序,但我不知道为什么单独启用该选项而没有指令导致seg错误.

如果我的问题相当简单,我道歉.我可以发布代码,但它很长.它在我分配初始值时出错:

    REAL, DIMENSION(da,da) :: uconsold
    REAL, DIMENSION(da,da,dr,dk) :: uconsolde

    ...

    uconsold=0.0    
    uconsolde=0.0       
Run Code Online (Sandbox Code Playgroud)

第一个分配给"uconsold"的工作正常,第二个似乎是错误的来源,因为当我评论该行时,接下来的几行快速执行,直到再次使用"uconsolde".

感谢您对此事的任何帮助.

fortran openmp

4
推荐指数
1
解决办法
3919
查看次数

使用实体框架将guid转换为字符串

我正在尝试将GUID作为字符串传递给Web服务,但是我已经遇到了障碍.GUID作为a存储在SQL Server中UNIQUEIDENTIFIER,EF将其作为GUID提取.我想要做的是在我的查询中这样做:

var query = myEntities.Foo.Where(q => q.Id== Id)
                .Select(bar =>
                        new Bar()
                            { BString = bar.GUID }
                        );
Run Code Online (Sandbox Code Playgroud)

现在,C#抛出,你不能转换生成错误System.Guidstring,所以我认为你可以这样做:

{ BString = bar.GUID.ToString() }
Run Code Online (Sandbox Code Playgroud)

甚至

{ BString = Convert.ToString(bar.GUID) }
Run Code Online (Sandbox Code Playgroud)

但两者都以运行时异常结束:

有一个异常,它是System.NotSupportedException:LINQ to Entities无法识别方法'System.String ToString(System.Object)'方法,并且此方法无法转换为商店表达式.

所以我推测,在这两种情况下,它不能够找出一个T-SQL相当于从去UniqueIdentifiervarchar.

除了检索对象之外,有没有办法解决这个问题,然后迭代我的返回集将每个对象复制到一个新对象并在那时转换guid-> string?

谢谢.

c# entity-framework

3
推荐指数
1
解决办法
9006
查看次数

通过JavaScript更新ASP.NET中的隐藏字段

我继承了一些我被告知要集成到我们的ASP.NET站点的JavaScript.我认为这将是直截了当的,但结果却是一个挑战.

代码看起来像这样:

<SELECT id="Question1" name="Question" onchange="updateQuestion();">                 
<OPTION value="notChosen">--Please Select One--</OPTION>
<OPTION value="in">India</OPTION>
<OPTION value="de">Germany</OPTION>                     
<OPTION value="fr">France</OPTION>                
<OPTION value="us">United States</OPTION>                     
<OPTION value="ch">Switzerland</OPTION>                
</SELECT> 
Run Code Online (Sandbox Code Playgroud)

目标是从这个HTML控件获取值到ASP.NET,但是这个控件本身是由另一块javascript动态生成的,所以我不能只将它改为asp.net控件.我的解决方案是添加onchange ="updateQuestion();" 方法,这个JS将采用这些SELECT标记并将值放入ASP.NET控件:

function updateSecQ() {
    var sQuestion = document.getElementById('<%=sQuestion.ClientID%>');
    sQuestion.Value = "";
    var questions = document.getElementsByName('Question');
    for (question in questions) {
        if (questions[question].value != null)
            sQuestion.Value += questions[question].value + ",";
    }
    alert(sQuestion.Value);
}
Run Code Online (Sandbox Code Playgroud)

如您所见,那是为了更新ASP.NET控件: <asp:HiddenField ID="sQuestion" runat="server" value="" />

这看起来一切正常,但是当我在表单提交服务器端时,我看到sQuestion.Value仍然是="".

我不太确定我在这里做错了什么,任何输入都会非常感激.感谢您的时间.

javascript asp.net

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