草庐IT

垃圾收集器

全部标签

c# - 防止对非托管代码中使用的托管引用进行垃圾回收

我的C#应用程序使用包装的C++代码进行计算。C++header:__declspec(dllexport)voidSetVolume(BYTE*data,unsignedintwidth);C++/CLI包装器:voidSetVolume(array^data,UInt32width){cli::pin_ptrpdata=&data[0];pal->SetVolume(pdata,width);}C#:publicstartCalc(){byte[]voxelArr=File.ReadAllBytes("Filtered.rec");palw.SetVolume(voxelArr,4

c# - 在 C# 中使用 RAII 安全吗?和其他垃圾收集语言?

我正在制作一个接受System.Windows.Form控件并设置其光标的RAII类。并在析构函数中将光标设置回原来的样子。但这是个坏主意吗?当此类的对象超出范围时,我可以安全地相信析构函数将被调用吗? 最佳答案 这是一个非常非常糟糕的主意。当变量超出范围时,不会调用终结器。它们在对象被垃圾回收之前的某个时刻被调用,这可能是很长一段时间之后。相反,您想要实现IDisposable,然后调用者可以使用:using(YourClassyc=newYourClass()){//Useycinhere}这将自动调用Dispose。在C#中很

c# - 如何降低电子邮件的垃圾邮件分数?

我正在向用户发送新的登录名和密码,但是当我在互联网上测试我们网站的版本时,垃圾邮件killer的垃圾邮件分数是4.6。这意味着它被困住了。电子邮件是带有链接图像的HTML(因此营销部门有他们漂亮的字体和颜色)。MailMessage()对象似乎没有让我对消息的输出格式有很多控制权。我可以采取什么措施来降低垃圾邮件分数?我正在使用这个发送:/*sendanemail*/MailMessagemsg=newMailMessage();msg.IsBodyHtml=true;//msg.BodyEncoding=Encoding.UTF8;msg.To.Add(newMailAddress(

c# - 抑制 C# 垃圾回收

我的应用程序分配了大量内存(数百万个小对象,总计几千兆字节)并保留了很长时间。.NET是否在浪费时间检查所有这些数据以对其进行GC?第2代GC(检查所有对象)多久发生一次?有什么方法可以降低它的频率或暂时抑制它的发生吗?我确切地知道什么时候我准备好收集大量内存,有什么方法可以优化它吗?我目前正在调用GC.Collect();GC.WaitForPendingFinalizers();那时。更新:性能计数器“GC时间百分比”显示平均为10.6%。 最佳答案 除非您可以确认垃圾收集器正在主动降低应用程序的性能,否则您不应采取措施削弱运行

区块链技术如何使数据收集变得透明

大数据分析是现代商业和商业中最大的进步之一。从海量数据和微调业务运营中获得前所未有的质量和数量的洞察力的能力已被证明是现代经济中的技术奇迹。虽然大数据只会变得越来越大,但它的紧迫问题不容忽视。数据分析是一门相当新的学科,随着计算机技术(即机器学习)的出现在过去五年中呈指数级增长和发展。随着全球智能手机和互联网的大规模采用和使用,现在可以跟踪和收集大量数据。然而,数据收集和分析行业目前正在使用不可持续且不符合当今监管要求的过时模型运行。就目前而言,在毛球科技看来,该行业集中在少数大型数据经纪商和数据交易网络手中,通常不会考虑用户的权利或同意。将我们的数据掌握在少数大公司手中意味着他们可以通过他们

c# - Expression<TDelegate>.Compile 和垃圾收集

当我将表达式编译成可执行代码并获取委托(delegate)时-如果不再存在对该委托(delegate)的引用,代码是否会被垃圾收集?有这方面的文档吗?因为我在MSDN中没有找到任何有用的东西。 最佳答案 是的,代码可以被垃圾回收。当您对T的表达式调用编译时,代码将编译为DynamicMethod,并且那些有资格进行垃圾收集。确实在MSDN上没有说明,但您可以查看DLR中Expression.Compile的实现,这是.net4.0附带的内容:http://dlr.codeplex.com/SourceControl/changese

c# - 在 visual studio 中调用垃圾收集

是否可以通过VisualStudio2015Enterprise在调试session期间收集gc?我想在调用GC.Collect()时观察我的应用程序的内存使用情况,但仅用于一些调试。因此,在调试应用程序期间从VisualStudio调用它会非常有帮助。非常感谢! 最佳答案 您可以在立即窗口中编写GC.Collect()。 关于c#-在visualstudio中调用垃圾收集,我们在StackOverflow上找到一个类似的问题: https://stackov

c# - 在静态类中声明的对象何时会被垃圾回收?

publicstaticclassstClass{staticClass1obj=newClass1();publicstaticintreturnSomething(){return0;}}如果我正在调用静态函数stClass.returnSomething()在其他一些非静态类中?注意:Class1不是静态的 最佳答案 从不,如obj不执行IDisposable.如果你的意思是什么时候obj获得垃圾收集那么答案仍然是永远不会-静态字段永远不会被垃圾收集,因此obj的对象如果您设置obj,引用将仅符合垃圾收集条件为空(或其他一些对

c# - .NET:典型的垃圾收集器开销是多少?

5%的执行时间花在了GC上?10%?25%?谢谢。 最佳答案 Thisblogpost对该领域进行了有趣的调查。海报的结论?对于他的示例,开销可以忽略不计。SotheGCheapissofastthatinarealprogram,evenintightloops,youcanuseclosuresanddelegateswithoutevengivingitasecond’sthought(orevenafewnanosecond’sthought).Asalways,workonaclean,safedesign,thenpro

c# - 是否可以停止 .NET 垃圾收集?

程序员是否可以在C#编程语言中以编程方式启动/停止垃圾回收?比如为了性能优化等等。 最佳答案 从.NET4.6开始,在GCclass中有方法是可能的:GC.TryStartNoGCRegion(...)和GC.EndNoGCRegion()。 关于c#-是否可以停止.NET垃圾收集?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3074434/