WPF应用程序,.NET 6:如何扩展应用程序堆大小或堆栈[重复]

tyg4sfes  于 2023-05-08  发布在  .NET
关注(0)|答案(2)|浏览(141)

此问题已在此处有答案

How to change stack size for a .NET program?(4个答案)
4天前关闭。
我在WPF上开发了一个游戏。但是当我启动应用程序时,它冻结了,新的RAM没有分配。我正在使用.NET 6和WPF。我认为在应用程序中.NET正在耗尽堆内存。
我的应用程序冻结在120 MB的RAM时,我有8 GB的。
你能告诉我如何在.NET 6中增加WPF应用程序中的堆大小吗?
代码在:https://github.com/DmitriySidyakin/Chess/tree/Chess-0.1.2-with-Computer-Player-development
如果你想编译,你可以从以下网站下载.NET 6:https://dotnet.microsoft.com/en-us/download/dotnet/6.0
如果您在设置(新游戏)中选择一个电脑玩家,并且它采取了行动,该程序将冻结。
附带的项目“GraphAlgorithms”可以从存储库下载:https://github.com/DmitriySidyakin/Graph
在“Chess.ComputerPlayer”项目中,在文件“FiveStepPlayer.cs”中,在第150行,您可以通过0指定图遍历的深度,如果“int deep”指定0,则不会冻结。但是这里需要图中的搜索深度来提高AI的质量。
如果int deep设置为5,则会出现堆栈溢出。我还想了解如何以编程方式增加堆栈或项目中的参数。
问题是,如何以编程方式管理CLR中的应用程序域以增加其堆栈和堆?

wqnecbli

wqnecbli1#

好吧,我想我找到了。
NewGameSettings.xaml.cs模块中,您正在执行一个“禁止”移动:通过隐藏一个模态窗口,你实际上冻结了应用程序。模态仍然存在,但你看不到它(因此没有人可以关闭它)。
现在,我不知道你的应用程序应该如何运行。我只展示如何“解锁冻结”。在那之后,就由您来调优代码了。

private void StartNewGameButton_Click(object sender, RoutedEventArgs e)
    {
        
        mainWindow.GameSettings.Player1White = PlayerName1.Visibility == Visibility.Visible ? Settings.PlayerType.Player : Settings.PlayerType.Computer;
        mainWindow.GameSettings.Player2Black = PlayerName2.Visibility == Visibility.Visible ? Settings.PlayerType.Player : Settings.PlayerType.Computer;

        mainWindow.GameSettings.Player1WhiteName = PlayerName1.Text;
        mainWindow.GameSettings.Player2BlackName = PlayerName2.Text;

        //this.Visibility = Visibility.Hidden;   //never hide a modal!!!
        this.Close();                            //do this instead!
        mainWindow.EndGame();
        mainWindow.ResetBoard();
        mainWindow.StartGame();
    }
ozxc1zmp

ozxc1zmp2#

对你最初的问题,答案是否定的。.NET自动管理内存分配。
可能是因为其他问题而冻结。尝试改进算法。
当它冻结时,单击Visual Studio上的Pause按钮,查看执行的位置。所以你可以知道它在做什么。
可能是一些事件持续触发,使UI无响应。
如果存在任何内存问题,Visual Studio诊断工具有助于调查。如果内存在冻结时没有急剧增加,我认为不太可能是内存问题导致冻结。
https://learn.microsoft.com/en-us/visualstudio/profiling/memory-usage?view=vs-2022
https://learn.microsoft.com/en-us/visualstudio/profiling/memory-usage-without-debugging2?view=vs-2022

相关问题