簡體   English   中英

Dynamics AX 2012不釋放內存

[英]Dynamics AX 2012 not releasing memory

我正在嘗試將AOT CUS層導出為XPO文件。 參考這個問題 我已經回答了上述問題,給出了很好的建議,但是我遇到了“內存不足”的問題。 我做了一些進一步的研究和一些其他的實驗。 這是我用來爬下AOT樹並僅導出屬於“ CUS”層的節點的算法示例。

private void GetAOLHelper(TreeNode baseNode, str baseExportDirectory, int currentLevel, int maxLevel)
{
    int cusLayerTest;
    int CusLayerValue = 4096;
    str ExportFileName = "";
    str ExportDirectoryName = "";
    TreeNode nextNode;

    if (baseNode != null)
    {
        cusLayerTest = CusLayerValue & baseNode.applObjectLayerMask();
        if (cusLayerTest > 0)
        {
            ExportFileName = baseNode.AOTname() + ".xpo";
            this.NodeExport(baseNode, baseExportDirectory, ExportFileName);
        }
        else
        {
            if (currentLevel < maxLevel)
            {
                nextNode = baseNode.AOTfirstChild();
                while (nextNode != null)
                {
                    this.GetAOLHelper(nextNode, baseExportDirectory, currentLevel + 1, maxLevel);
                    nextNode = nextNode.AOTnextSibling();
                }
                nextNode = null;
            }
        }
    }
}

該算法的關鍵在於:我想爬下AOT樹(從特定節點開始)並導出作為“ CUS”層對象的任何層。 我停止以“最大級別”爬下這棵樹,這意味着我只向樹深處移動了X個級別。 我目前僅在AOT樹的“數據字典”節點上運行此算法。

我面臨的問題是,運行此作業時,AX32.exe進程的內存占用量將近1 GB。 如果我針對多個節點運行此代碼,則內存需求將不斷攀升。 我很好奇為什么算法完成后AX無法釋放內存。 我對Google的研究提出了AX垃圾收集的一些問題。 我想知道是否有一種方法可以在AX中強制垃圾回收? 如果我嘗試導出AOT中的每個節點,則會遇到上述“內存不足”異常。 在關閉AX32.exe客戶端之前,不會釋放內存。

TreeNode對象不會像大多數其他對象一樣被垃圾回收。 您必須自己釋放它。 完成節點操作后,調用treeNodeRelease()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM