Actionscript 3 mxmlc-警告:无法解析损坏的数据-一旦项目达到一定大小?
我有一个长时间运行的项目,它被编译为发布的模块,但是测试套件可能会运行每个模块的所有测试 这个项目相当大,目前大约有1250个测试用例(类),总共有4000个类。这是一个asunit3项目,因此所有测试用例都列在一个AllTests.as文件中 很明显,我并不是一直运行所有的测试——运行套件需要几分钟,所以大部分时间我都在运行集中测试,但一天有几次我会运行完整套件,包括集成测试等等 在我最后几个小时的工作中,我不再能够成功地构建和运行整个套件。我们有一个脚本,允许我们使用包名或类名过滤测试,因此我可以测试包['modules']或测试包['com']等等。我还可以排除包-testallexcept['utils']等等 我可以运行测试的任何和所有子集,但如果我尝试测试整个集合,我会得到:Actionscript 3 mxmlc-警告:无法解析损坏的数据-一旦项目达到一定大小?,actionscript-3,apache-flex,jvm,mxmlc,asunit,Actionscript 3,Apache Flex,Jvm,Mxmlc,Asunit,我有一个长时间运行的项目,它被编译为发布的模块,但是测试套件可能会运行每个模块的所有测试 这个项目相当大,目前大约有1250个测试用例(类),总共有4000个类。这是一个asunit3项目,因此所有测试用例都列在一个AllTests.as文件中 很明显,我并不是一直运行所有的测试——运行套件需要几分钟,所以大部分时间我都在运行集中测试,但一天有几次我会运行完整套件,包括集成测试等等 在我最后几个小时的工作中,我不再能够成功地构建和运行整个套件。我们有一个脚本,允许我们使用包名或类名过滤测试,因此
Warning: Failed to parse corrupt data.
如果我只筛选出几个类,那么我就能够编译和打开swf,但它只是一个白框,实际上并不运行测试。如果我再过滤一些,那么一切都很好。我过滤哪一个似乎无关紧要——只要我拿出大约15个测试用例,一切都很好(尽管我还没有找到确定/不确定之间的确切数字)
我正在使用-benchmark
进行编译,并获得以下输出:
Initial setup: 34ms
start loading swcs 7ms Running Total: 41ms
Loaded 45 SWCs: 253ms
precompile: 456ms
Files: 4013 Time: 16087ms
Linking... 91ms
SWF Encoding... 833ms
/Users/me/Documents/clients/project/bin/ProjectShellRunner.swf (4888318 bytes)
postcompile: 927ms
Total time: 17312ms
Peak memory usage: 413 MB (Heap: 343, Non-Heap: 70)
mxmlc finished compiling bin/ProjectShellRunner.swf in 18 seconds
由于最高内存使用量超过了mxmlc中的默认堆,我将其增加到
VMARGS="-Xmx1024m -Dsun.io.useCanonCaches=false "
这似乎没有什么帮助
asunit3和projectsprouts的设置方式将所有测试集中在一个AllTests.as文件中。这现在超过2500行,并且导入了所有1250个测试用例
在类的数量、类的长度、一个类中导入的数量等方面,我有没有遗漏什么?或者除了java的VM堆之外,我还可以更改其他任何设置?我正在使用Flex 4.2 mxmlc编译器
显然,我可以通过一个脚本来解决这个问题,运行一系列子集,而不是单个套件,但我想了解为什么会发生这种情况
有什么线索吗
基于推特Qs的一些额外信息:
- 我正在运行MacOSX10.8.5
- mxmlc正在通过命令行运行
- 我已经尝试强制它使用32位运行时-没有改变
- 我已将mxmlc切换为无头模式,也没有任何更改