将数据加载到数据透视视图并离开页面或关闭浏览器时,内存未释放

问题描述 投票:0回答:1

将一些数据加载到数据透视视图/网格(~20k/30k 行)时,我们的 web 应用程序出现内存问题。问题并不是真正的使用率太高或其他什么,而是在已经离开页面甚至关闭浏览器时,即使等待 30 分钟以上,它也没有被释放或释放。重新访问页面并再次加载数据后,内存甚至变高了一点,尽管没有翻倍,之后它就不再变高了,我觉得有点奇怪。没有人已经知道这可能是什么以及通常如何预防这种情况吗?

我们使用什么技术来构建: 为了开发我们的网络应用程序,我们使用了 Syncfusion Blazor。我们的应用程序是服务器端的,我们使用了 .net6,但是我认为这些都没有相关性。

我无法提供特定 .razor 页面的代码,因为这太多了,但我可以解释一下。我们不使用任何需要专门处理或关闭的组件。这是一个简单的页面,其中包含一些 UI 元素,用于强制用户选择日期和一些其他参数,然后将这些参数通过 OnButtonClick 发送到使用 HttpClient 为客户加载数据的控制器。加载的数据会进行一些转换并聚合为枢轴网格,仅此而已。

当用户离开页面或关闭浏览器时,我必须做什么才能释放所有内存,就好像页面和加载从未完成一样。

我读到这是由 GC 完成的,你可以自动调用 GC,但不推荐这样做。

asp.net memory web-applications blazor syncfusion
1个回答
0
投票

您避免直接调用 GC 是正确的,我怀疑在这种情况下即使调用 GC 也不会帮助您。

除非您正在执行某些特定的编码,否则服务器不知道浏览器已离开页面甚至关闭。

我怀疑您配置了一些缓存。可能位于数据层(数据集、其他内存中数据表示),ASP.NET/Blazor 可能正在缓存其发送的 html 内容,您可能在页面上使用的控件缓存某些内容。

您说内存在 30 分钟左右后释放 - 这是否一致?如果是这样,您可以寻找一个配置。

他们说计算机科学中最难的两件事是命名和缓存!

© www.soinside.com 2019 - 2024. All rights reserved.