在X ++中的内部运行堆栈溢出

时间:2011-03-16 11:04:50

标签: axapta x++ dynamics-ax-2009

  

可能重复:
  Code crashes at iteration 86

static void Job47(Args _args)
{
  str                                  path,stx;
  TreeNodeIterator                     iter;
  TreeNode                             treeNode, treeNodeToRelease;
  Map                                  dictMenuDisplay;
  FormName                             formName;
  MenuItemName                         menuItemName;
  container                            conMenu;
  int                                  i,n;
  ;

  for (n=1;n<=100;n++)

 {
    info(strfmt("iter:%1",n));
    path            ="Menu Items\\Display";
    dictMenuDisplay = new Map(Types::String,Types::Container);
    treenode        = Treenode::findNode(path);
    iter            = treenode.AOTiterator();
    treenode        = iter.next();

    while (treenode)
      {
        formName     = treenode.AOTgetProperty("Object");
        menuItemName = treenode.AOTname();

         if (dictMenuDisplay.exists(formName))
         {
           conMenu = dictMenuDisplay.lookup(formName);
           conMenu = conIns(conMenu,conlen(conMenu)+1,menuItemName);
           dictMenuDisplay.insert(formName,conMenu);
         }


         else
         dictMenuDisplay.insert(formName,[menuItemName]);


        if(treeNodeToRelease && SysTreeNode::isApplObject(treeNode))
         {
           treeNodeToRelease.treeNodeRelease();
           treeNodeToRelease=null;
          }


         if(SysTreeNode::isApplObject(treeNode))
          {
            treeNodeToRelease=treeNode;
          }

         treeNode=iter.next();
    }
}
}

我收到错误“内部运行堆栈溢出”,代码正确运行到第86次迭代,帮助。垃圾收集器在这里工作正常吗?

有人可以帮助我知道是不是因为X ++中的垃圾收集器?

到目前为止,我对GC的了解是GC效率不高,因为一旦资源不再使用它就不会发生。垃圾收集运行时的一部分是它是非确定性的,只有在确定需要运行时才会运行。

在我的代码中必须做些什么才能完美地执行它?

0 个答案:

没有答案