gpt4 book ai didi

.net - VB.NET 内存管理

转载 作者:行者123 更新时间:2023-12-04 22:53:20 24 4
gpt4 key购买 nike

更新:我可能将内存使用问题与 UI 共享与处理相同的线程混淆(如下面的 MusiGenesis 所指出的)。但是关于内存使用情况。我仍然无法找到 VB.net 特定的语法,尽管人们在下面指出了一些很棒的 .Net 和 C# 信息(如果我更精通这些技术,可以适应使用 VB.net)。

我正在创建一个 VB.Net 应用程序。

  • 该应用程序基本上解析数据
    位于客户端计算机上的文件
    进入数据集/数据表。
  • 然后使用
    DataView,它分解了
    数据表成可管理的 block ,
    写入 XML 并将 XML 数据发送到
    网络服务。

  • 一般概念运行良好,但是我遇到了任务管理器上的内存使用量随着程序用于加载越来越多的文件而不断增长的问题。

    在启动时,在做任何事情之前,VB 应用程序有 27,000 K。
    一旦文件被解析,甚至在我处理了文件句柄之后,数据也会增加很多。我删除了代码中的所有内容,但 Mem Usage 中的内存似乎仍然被捕获。 Mem Usage 增长的原因没有规律或原因(即有时在读取 7mb 文件时它可以增长 20mb,但有时在读取 3mb 文件时它根本不会增长)。有时,它会在解析完成时释放一些内存,而其他时候它只是保持。

    我看过 .Net Memory Profiler 并没有真正从中做出正面或反面。
    我在 Internet 上阅读了很多关于 .Net 上的内存管理的内容,一般是关于 Dispose 和“Nothing”以及 DataSets 等,但是还没有真正找到任何关于 VB.Net 的具体内容。

    我的一般问题是 :是否有任何好的教程/书籍/博客/等显示有关在 VB.Net 应用程序中管理内存的更深入的教程(即如何/何时处置/关闭等),或者是否有人从那里获得一些具体提示经验。

    最佳答案

    首先,您需要意识到任务管理器正在向您显示操作系统已分配给您的应用程序的内存量。这不一定是实际使用的内存量。当 .NET 应用程序第一次启动时,操作系统会为它分配内存,就像它为任何进程分配内存一样。然后,.NET 运行时进一步划分该内存并管理它的使用方式。运行时可以被认为是“贪婪的”,因为一旦操作系统分配了内存,除非操作系统特别要求,否则它不会归还内存。结果是任务管理器中的内存使用不准确。

    要真正了解内存使用情况,您需要使用性能监视器并添加适当的计数器。

    至于IDisposable和 dispose 模式,您可能不会找到很多关于语言特定术语的讨论,因为它是由 .NET Framework 本身提供的,并且与语言无关。无论您使用哪种语言,模式都是相同的,只是语法不同。

    有几个可用的引用资料可以为您提供有关内存管理如何工作的信息。我有两篇博文,一篇是关于 Using Garbage Collection in .NET一个列出了各种 resources我曾经在 .NET 中创建过两个关于内存管理的演示文稿。

    最好的“经验法则”是,如果一个类实现了 IDisposable ,这样做是有原因的,您应该确保您正在调用 Dispose()当您完成使用该实例时。使用 using 最容易做到这一点。陈述。

    关于.net - VB.NET 内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1417876/

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