当前位置: 首页 > 知识库问答 >
问题:

在Windows 10中处理通用Windows应用程序中的内存

齐成双
2023-03-14

我正在为Windows10开发一个UWP应用程序。我有一个问题的内存管理在我的应用程序。我有一个 ,它的内容中会有很多图像。当用户单击图像时,全尺寸图像将加载到窗格中。我在XAML中直接注册了很多点击和点击事件。当我检查内存使用时,它一直在增加,在一个点后,应用程序崩溃。我的问题是,是否需要注销所有在XAML中注册的事件,以便释放内存?我尝试调用 ,但这并不能解决问题。我想可能是内存泄漏了。应用程序中有多个页面,当用户选择 之外的可用按钮时,内容会发生变化,以及在将SplitView内容设置为另一个页面之前,如何取消在该特定页面中注册的事件。

编辑:

整个页面的XAML超过300行,所以我不能将其粘贴在这里。但事件是这样登记的

<Button Name="Sample" Tapped="Sample_Tapped" Content="Sample Button" />

每次都会重新创建页面。它没有缓存。我在SplitView内容中有一个框架,每当用户希望更改显示的图像部分时,该框架就会更改。

MainFrame.Navigate(typeof(ImagePage),"SampleSection");

当用户更改节时,我将调用垃圾收集器

protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
    {
        GC.Collect();

    }

但没有释放内存。

共有1个答案

景正文
2023-03-14

我认为这一行造成了问题:

您将保持每次用户选择图像时创建新页面。它会超时消耗内存。

解决方案是使用新数据(new dataContext?)刷新页面,而不是创建新数据。另一种解决方案是,当您需要使用BackStack属性创建新页面时,清除大型机的导航堆栈。

将XAML中的 设置为'required'也有帮助,但这不是问题的根源。 ioncachemode>

 类似资料:
  • 我有一个带post请求的控制器。我试图用一个简单的NotNull注释验证POJO。我正在使用ControllerAdvice来处理异常。 所以我尝试使用它,但当我启动应用程序时,我得到了以下信息: 因此,我想为BindException创建自己的处理程序,但当我为BindException类创建ExceptionHandler时,spring应用程序不会启动。如果我注释掉handleBindExc

  • 3->现在我从后端发送通知(Hub在电话mpns通知的情况下工作)。 问题:-你们知道为什么它在Windows8.1中不起作用吗?或者我缺少了什么。这是我正在经历的最简单的例子。感谢任何帮助。 编辑:-这是有趣的事情。

  • 过去几天我一直在尝试在我的Windows PC上安装Rails。我从www.railsinstaller那里得到了这个包裹。org,它安装得很好。创建新应用程序时,我可以看到所有应用程序文件都已创建,然后出现以下错误: DL已弃用,请使用FIDLE从中获取gem元数据https://rubygems.org/..........正在解析依赖项。。。Gem::RemoteFetcher::Fetch

  • 现在我正在开发一个能够接收通知的应用程序,进展顺利,直到我需要向服务器发送应用程序上收到的通知的副本。 虽然我知道这种方法的缺点,但这是我处理收到的通知的唯一方法。 现在我可以通过这个方法处理应用程序在后台和前台收到的通知 。在此方法中,我调用NSURLConnection sendAsynchronousRequest将收到的通知数据发送到我的服务器。 但是,当应用程序被删除(从后台应用程序中删

  • 我试图在完全使用JavaConfig配置的Spring MVC应用程序中使用处理404错误。 Spring MVC版本为4.1.5 我读过这样的话: null SpringConfigurationInitializer 请注意,我正在使用 而且 MVC配置 存储配置 安全配置

  • 问题内容: 有一个包含两列的表:和。桌子上有关于。数据库是。 要求是开发一个连接到该数据库的简单Java EE应用程序,该应用程序允许用户通过遵循特定的URL 下载所有值。 如果我们将所有值组合成一个大块,然后将它们连接在一起(所有值之间用逗号分隔),然后将其发送给用户,这听起来是一个合适的解决方案吗? 该应用程序不是公开的,将由有限号使用。人。 问题答案: 最好的选择是 不要 以任何方式将数据存

  • 问题内容: 我有大约10个EntityManager的Java EE应用程序(EM的数量可能会增加)。我的应用程序还包含许多无状态,有状态和消息驱动的bean。 与其将我的EM注入每个Bean (以及两种检测用户使用的EM的方法),不如将所有这些存储在一个singleton bean中,并与其他bean一起访问。这样,无需担心可维护性。 但是,将EM存储在一个单例bean中是否安全?会出现瓶颈吗?

  • 要在控制台应用程序中开始使用Hangfire,您需要首先将Hangfire包安装到控制台应用程序。因此,使用您的软件包管理器控制台窗口进行安装: PM> Install-Package Hangfire.Core 然后添加任务存储安装所需的软件包。例如,使用SQL Server: PM> Install-Package Hangfire.SqlServer 仅需 Hangfire.Core 软件包