之前反映程序改成vba后发生不定时非法现象。
现在找到一些异常,但可能还不一定是问题所在。现反映一下:
1、Order.HoldingInfo2:不断调用后内存占用不断升高,貌似不能释放,请看一下为什么(估计是有点问题)
但我现实上并不会像下面这样调用,也就3分钟一共循环调用20次,应该不至于导致内存不足?
2、查windows的日志,非法的时候金字塔很大部分是如下类似的出错记录,由于不是很懂看,能不能帮忙判断一下是哪方面原因?
异常代码: 0xc0000374查了一下代码可能是:堆已损坏
错误应用程序名称: WinStock_3.exe,版本: 3.8.0.0,时间戳: 0x569f42f9
错误模块名称: ntdll.dll,版本: 6.1.7601.23392,时间戳: 0x56eb3625
异常代码: 0xc0000374
错误偏移量: 0x00000000000bf262
错误进程 ID: 0x154c
错误应用程序启动时间: 0x01d1ae36191ac5ab
错误应用程序路径: C:\证券\Weisoft Stock - 测试 - 64\WinStock_3.exe
错误模块路径: C:\Windows\SYSTEM32\ntdll.dll
'-------------------测试Order.HoldingInfo2----------------------------------------------------------------------------------------------Sub APPLICATION_VBAStart()
Call Application.Settimer(5,30)
End Sub
Sub APPLICATION_Timer(ID)
If ID = 5 then
Call test
End If
End Sub
Sub test()
Dim sAcctNo,iCounter1,aaa
Dim iBuyHolding,dblBuyCost,iBuyTodayHolding,iSellHolding,dblSellCost,iSellTodayHolding,dblPNL,dblUseMargin,sBgCont,sMarket
sAcctNo = 611183
'这里修改为自己的账号
For iCounter1 = 1 to 500 step 1
'
aaa = Order.Holding2(sAcctNo)
Call Order.HoldingInfo2(1,iBuyHolding,dblBuyCost,iBuyTodayHolding,iSellHolding,dblSellCost,iSellTodayHolding,dblPNL,dblUseMargin,sBgCont,sMarket,sAcctNo)
'其余几个注释掉的,可能也会有类似问题,但是内存增长很不明显,可以当是没问题
'
Call Order.Contract("RB10","SQ",dblMultipliter,dblMinTick,iShortPercent,iLongPercent)
'
Call Order.HoldingInfoByCode2("RB10","SQ",iBuyHolding,dblBuyCost,iBuyTodayHolding,iSellHolding,dblSellCost,iSellTodayHolding,dblPNL,dblUseMargin,sAcctNo)
'
aaa = order.Account2(2,sAcctNo)
'
aaa = Order.Account2(6,sAcctNo)
'
aaa = Order.Account2(3,sAcctNo)
'
aaa = Order.Account2(28,sAcctNo)
'
aaa = Order.Account2(31,sAcctNo)
Next
End Sub
'-----------------------------------------------------------------------------------------------------------------------------------------
已经跳开了以上的代码。继续测试中。。。
--------------------------------------------------------------
后来查看资源监视器,发现程序占用的内存,
“提交”有时会突然跳跃式样上升
正常的时候一般是占200M以内的
观察到某一次是:开始一直是 占135M以内,跑了一个多小时后突然变为占420M,再过了10分钟后变为占5个G
此主题相关图片如下:test.png

之前另外一次也观察到突然占了1个G。
这个跳跃,好像并不是固定的跳的(有待观察)。怀疑之前不定时非法,就是内存突然跳到虚拟内存都装不下了
我这台测试机硬盘(剩十几G)没那么大就比较容易非法点,而且我是暴力测试(跑20个账号,并且循环速度加多)。
另外一台是专机硬盘剩余空间有6xG,同样一样非法过(因为刚上所以观察时间少)
请问一下,会有什么原因会导致这“提交”会突然跳跃式上升?我观察到这个问题是没行情数据的时候(星期天)。如果是内存泄露,我觉得不是应该缓慢的上升的么?为什么会是突然上升的呢?
[此贴子已经被作者于2016-5-15 15:22:41编辑过]
现在又过了10分钟,“提交”占了19个G了,估计再跳一次就没硬盘该死机了!

此主题相关图片如下:test.png

感觉一旦开始跳跃,就不断向上跳了,如果不跳的话就一直是110~13xM左右
[此贴子已经被作者于2016-5-15 15:27:35编辑过]
程序突然发现已经不知道什么时候偷偷停了,cpu占用0,没留意什么时候停的。
现在大概知道了,就是内存突然爆掉了,就是要慢慢找哪里出问题。客服如果看得出大概哪方面的问题的话,提示一下吧
就是用3.91版测的,3.63,3.8,3.9版也都测过,你就按我上面代码直接copy测,内存占用上升很快的
当然这应该不是我不定时非法的问题所在,是我测试中无意发现的
[此贴子已经被作者于2016-5-15 17:55:17编辑过]
附上代码,上面的版面编排有点问题,注意账号要修改为你们自己的测试账号,账号不对的话不会上升的
[此贴子已经被作者于2016-5-15 17:58:03编辑过]
测试时帐号是对上的,你的VBA就只有这点代码吗?是否存在其他代码导致的内存占用问题
附件不知道为什么传不上
[此贴子已经被作者于2016-5-15 18:10:58编辑过]
代码就那么多,我新建一个工程写在marco里面的
测试的图片,用3.9测的,3.91是另外一台机也测过,我现在懒得开
循环次数足够大才明显看得出,否则内存上升不够快
.txt是代码,注意修改账号

此主题相关图片如下:test.png

[此贴子已经被作者于2016-5-15 18:16:41编辑过]