gpt4 book ai didi

c# - 从 ascx 页面中的 C# 方法调用返回的字符串的垃圾收集

转载 作者:行者123 更新时间:2023-11-30 15:48:36 25 4
gpt4 key购买 nike

对于在 ASP.NET 上开发的 Web 应用程序,我们发现对于用户控制文件 (ascx),我们将作为方法调用的结果返回长字符串。这些使用特殊标签 <% %> 嵌入到 ascx 页面中

在对应用程序执行内存转储分析时,我们发现其中许多字符串没有被垃圾回收。此外,ascx 页面被编译为临时 DLL 并保存在内存中。这是导致长字符串保留在内存中而不被垃圾收集的原因吗?

注意:字符串的大小大于 85K。

最佳答案

如果它们是作为字符串文字生成的,那么它们很可能会被保留。一个驻留的字符串不太可能在应用程序的生命周期内被释放。这可以解释为什么没有收集变量。

您可以通过使用 CompilationRelaxations 属性和标记 NoStringInterning 标记程序集来验证这一点。

System.String 的 Intern 属性在“性能”部分下提供了很多关于此主题的信息

关于c# - 从 ascx 页面中的 C# 方法调用返回的字符串的垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2469741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com