减少Axapta 2012表单中的用户对象

减少Axapta 2012表单中的用户对象,axapta,microsoft-dynamics,dynamics-ax-2012,Axapta,Microsoft Dynamics,Dynamics Ax 2012,我们注意到,对于定制的Ax表单,保留了大约1500-2000个用户对象。最终用户通常会多次打开此表单,并根据用户对象限制快速运行 我开始使用sysinternaltools、GDIViewer以及可能导致此表单被许多资源使用的原因。从我的搜索中,我得出结论,大多数句柄都花在虚拟内存私有、虚拟内存图像和字体上 现在,我跑得有点卡住了。我希望找到关于哪些表单控件请求所有这些资源的线索。但我似乎无法将用户对象句柄链接到表单控件或对象 我的问题:如何确定哪些Ax窗体控件和用户对象句柄是关联的?如果不可能

我们注意到,对于定制的Ax表单,保留了大约1500-2000个用户对象。最终用户通常会多次打开此表单,并根据用户对象限制快速运行

我开始使用sysinternaltools、GDIViewer以及可能导致此表单被许多资源使用的原因。从我的搜索中,我得出结论,大多数句柄都花在虚拟内存私有、虚拟内存图像和字体上

现在,我跑得有点卡住了。我希望找到关于哪些表单控件请求所有这些资源的线索。但我似乎无法将用户对象句柄链接到表单控件或对象

我的问题:如何确定哪些Ax窗体控件和用户对象句柄是关联的?如果不可能,如何调试/跟踪/查看/跟踪哪个表单元素生成最多句柄

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <obj>
        <type>Brush</type>
        <count>276</count>
    </obj>
    <obj>
        <type>Font</type>
        <count>1762</count>
    </obj>
    <obj>
        <type>Region</type>
        <count>47</count>
    </obj>
    <obj>
        <type>Bitmap</type>
        <count>82</count>
    </obj>
    <obj>
        <type>DC</type>
        <count>78</count>
    </obj>
    <obj>
        <type>Palette</type>
        <count>2</count>
    </obj>
    <obj>
        <type>Virtual Memory Shared</type>
        <count>69</count>
    </obj>
    <obj>
        <type>Virtual Memory Private</type>
        <count>3020</count>
    </obj>
    <obj>
        <type>Virtual Memory Mapped</type>
        <count>34</count>
    </obj>
    <obj>
        <type>Virtual Memory Image</type>
        <count>2424</count>
    </obj>
</root>

刷子
276
字体
1762
区域
47
位图
82
直流
78
调色板
2.
虚拟内存共享
69
虚拟内存专用
3020
虚拟内存映射
34
虚拟内存映像
2424

听起来您的自定义表单需要重构,或者您的用户需要更多内存。顺便说一句,您没有指定正在使用哪个版本的AX

要回答有关查找表单上所有控件的问题,请执行以下操作:

您可以使用类似的方法来转储表单上的所有控件,或者将其放入表单的
run()
方法中,并将其修改为与活动表单一起使用,以提供控件列表……但我不确定您为什么要这样做


在我看来,您需要一名开发人员来查看一些自定义对象是如何设计的,以及它们是否占用了太多内存。

表单中包含了Microsoft.Dynamics.HierarchyViewerWPF.HierarchyView。我认为用户对象是由它引起的。但我需要证明这一点。