2012-01-16 71 views
2

我最近更新了我的Flex SDK版本到4.6,希望我的IOS應用程序的性能得到改善。不幸的是,我無法在「標準」編譯模式(超級慢速編譯模式)下成功編譯我的應用程序。從我從Java生成的錯誤日誌中可以看到(ADL的ADL編譯器是用Java編寫的),我的內存不足。Flex 4.6 IOS編譯器

編譯器使用大量的內存(1.5GB),但這不是我的PC的物理限制,它已安裝4GB。我正在運行64位版本的Windows 7(編輯:問題是使用32位和64位Java運行時重現)。

任何想法的人?下面貼是錯誤日誌:

# 
# A fatal error has been detected by the Java Runtime Environment: 
# 
# Internal Error (0xe06d7363), pid=1376, tid=2248 
# 
# JRE version: 6.0_16-b01 
# Java VM: Java HotSpot(TM) Client VM (14.2-b01 mixed mode windows-x86) 
# Problematic frame: 
# C [KERNELBASE.dll+0xb9bc] 
# 
# If you would like to submit a bug report, please visit: 
# http://java.sun.com/webapps/bugreport/crash.jsp 
# The crash happened outside the Java Virtual Machine in native code. 
# See problematic frame for where to report the bug. 
# 

--------------- T H R E A D --------------- 

Current thread (0x001ca000): JavaThread "main" [_thread_in_native, id=2248, stack(0x021b0000,0x02330000)] 

siginfo: ExceptionCode=0xe06d7363, ExceptionInformation=0x19930520 0x0232f750 0x498174a4 

Registers: 
EAX=0x0232f6b8, EBX=0x00400000, ECX=0x00000003, EDX=0x00000000 
ESP=0x0232f6b8, EBP=0x0232f708, ESI=0x498e666c, EDI=0x789e0020 
EIP=0x7562b9bc, EFLAGS=0x00000216 

Top of Stack: (sp=0x0232f6b8) 
0x0232f6b8: e06d7363 00000001 00000000 7562b9bc 
0x0232f6c8: 00000003 19930520 0232f750 498174a4 
0x0232f6d8: 49babe44 49babe44 789e0020 00400000 
0x0232f6e8: 498e666c 0232f6f8 496ecad0 498e6aa0 
0x0232f6f8: 0232f738 496e5542 00000008 496e3a0e 
0x0232f708: 0232f740 496e3439 e06d7363 00000001 
0x0232f718: 00000003 0232f734 e06d7363 00000001 
0x0232f728: 00000000 00000000 00000003 19930520 

Instructions: (pc=0x7562b9bc) 
0x7562b9ac: 0c eb 03 89 45 c0 8d 45 b0 50 ff 15 5c 11 62 75 
0x7562b9bc: c9 c2 10 00 cc cc cc cc cc 8b ff 55 8b ec 56 8b 


Stack: [0x021b0000,0x02330000], sp=0x0232f6b8, free space=1533k 
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) 
C [KERNELBASE.dll+0xb9bc] 
C [llvm.dll+0x443439] 
C [llvm.dll+0x4429d5] 

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) 
j llvm.llvmJNI.WriteModuleToFile(Ljava/lang/String;JLllvm/Module;J)V+0 
j llvm.LLVM.WriteModuleToFile(Ljava/lang/String;Lllvm/Module;J)V+7 
j com.adobe.air.ipa.AOTCompiler.writeBitcode(Ljava/lang/String;Lllvm/Module;)Ljava/io/File;+52 
j com.adobe.air.ipa.AOTCompiler.convertAbcToLlvmBitcodeImpl()V+721 
j com.adobe.air.ipa.BitcodeGenerator.main([Ljava/lang/String;)V+114 
v ~StubRoutines::call_stub 

--------------- P R O C E S S --------------- 

Java Threads: (=> current thread) 
    0x006fc400 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=3292, stack(0x48e90000,0x49010000)] 
    0x0070e800 JavaThread "CompilerThread0" daemon [_thread_blocked, id=3408, stack(0x48e00000,0x48e50000)] 
    0x006fbc00 JavaThread "Attach Listener" daemon [_thread_blocked, id=2632, stack(0x48c40000,0x48dc0000)] 
    0x006fb800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=1248, stack(0x48a80000,0x48c00000)] 
    0x006cbc00 JavaThread "Finalizer" daemon [_thread_blocked, id=4940, stack(0x488c0000,0x48a40000)] 
    0x006c7400 JavaThread "Reference Handler" daemon [_thread_blocked, id=1628, stack(0x48740000,0x488c0000)] 
=>0x001ca000 JavaThread "main" [_thread_in_native, id=2248, stack(0x021b0000,0x02330000)] 

Other Threads: 
    0x006c3800 VMThread [stack: 0x003a0000,0x003f0000] [id=3968] 
    0x00717400 WatcherThread [stack: 0x49050000,0x490a0000] [id=2552] 

VM state:not at safepoint (normal execution) 

VM Mutex/Monitor currently owned by a thread: None 

Heap 
def new generation total 72576K, used 34430K [0x04330000, 0x091f0000, 0x091f0000) 
    eden space 64512K, 52% used [0x04330000, 0x0640fd70, 0x08230000) 
    from space 8064K, 9% used [0x08230000, 0x082efd50, 0x08a10000) 
    to space 8064K, 0% used [0x08a10000, 0x08a10000, 0x091f0000) 
tenured generation total 967936K, used 820706K [0x091f0000, 0x44330000, 0x44330000) 
    the space 967936K, 84% used [0x091f0000, 0x3b368958, 0x3b368a00, 0x44330000) 
compacting perm gen total 12288K, used 5389K [0x44330000, 0x44f30000, 0x48330000) 
    the space 12288K, 43% used [0x44330000, 0x448736f0, 0x44873800, 0x44f30000) 
No shared spaces configured. 

Dynamic libraries: 
0x00400000 - 0x00424000  C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.6\jre\bin\java.exe 
0x77850000 - 0x779d0000  C:\Windows\SysWOW64\ntdll.dll 
0x76e30000 - 0x76f40000  C:\Windows\syswow64\kernel32.dll 
0x75620000 - 0x75666000  C:\Windows\syswow64\KERNELBASE.dll 
0x76cf0000 - 0x76d90000  C:\Windows\syswow64\ADVAPI32.dll 
0x74f90000 - 0x7503c000  C:\Windows\syswow64\msvcrt.dll 
0x75460000 - 0x75479000  C:\Windows\SysWOW64\sechost.dll 
0x75960000 - 0x75a50000  C:\Windows\syswow64\RPCRT4.dll 
0x74f30000 - 0x74f90000  C:\Windows\syswow64\SspiCli.dll 
0x74f20000 - 0x74f2c000  C:\Windows\syswow64\CRYPTBASE.dll 
0x7c340000 - 0x7c396000  C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.6\jre\bin\msvcr71.dll 
0x6d800000 - 0x6da8b000  C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.6\jre\bin\client\jvm.dll 
0x750d0000 - 0x751d0000  C:\Windows\syswow64\USER32.dll 
0x75680000 - 0x75710000  C:\Windows\syswow64\GDI32.dll 
0x75c80000 - 0x75c8a000  C:\Windows\syswow64\LPK.dll 
0x76d90000 - 0x76e2d000  C:\Windows\syswow64\USP10.dll 
0x744d0000 - 0x74502000  C:\Windows\system32\WINMM.dll 
0x755c0000 - 0x75620000  C:\Windows\system32\IMM32.DLL 
0x75ca0000 - 0x75d6c000  C:\Windows\syswow64\MSCTF.dll 
0x72180000 - 0x721cc000  C:\Windows\system32\apphelp.dll 
0x6d7b0000 - 0x6d7bc000  C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.6\jre\bin\verify.dll 
0x6d330000 - 0x6d34f000  C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.6\jre\bin\java.dll 
0x6d290000 - 0x6d298000  C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.6\jre\bin\hpi.dll 
0x75670000 - 0x75675000  C:\Windows\syswow64\PSAPI.DLL 
0x6d7f0000 - 0x6d7ff000  C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.6\jre\bin\zip.dll 
0x492a0000 - 0x49922000  C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.6\sdks\4.6.0\lib\aot\lib\llvm.dll 
0x67b10000 - 0x67bfb000  C:\Windows\system32\dbghelp.dll 

VM Arguments: 
jvm_args: -Xss1500K -Xms256m -Xmx1024m 
java_command: com.adobe.air.ipa.BitcodeGenerator C:\Users\RICHAR~1.WAL\AppData\Local\Temp\AOT1326714613716\AOTBuildOutput8039785360254652711.tmp\BitcodeGenerator_opts.ser C:\Users\RICHAR~1.WAL\AppData\Local\Temp\AOT1326714613716\AOTBuildOutput8039785360254652711.tmp\ABCFiles 
Launcher Type: SUN_STANDARD 

Environment Variables: 
PATH=C:/Program Files (x86)/Adobe/Adobe Flash Builder 4.6/jre/bin/client;C:/Program Files (x86)/Adobe/Adobe Flash Builder 4.6/jre/bin;C:/Program Files (x86)/Adobe/Adobe Flash Builder 4.6/jre/lib/i386;C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.6\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Git\cmd;C:\Program Files\TortoiseGit\bin 
USERNAME=xxxx 
OS=Windows_NT 
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 42 Stepping 7, GenuineIntel 



--------------- S Y S T E M --------------- 

OS: Windows 7 Build 7601 Service Pack 1 

CPU:total 4 (8 cores per cpu, 2 threads per core) family 6 model 42 stepping 7, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, ht 

Memory: 4k page, physical 4177336k(605728k free), swap 4194303k(4050044k free) 

vm_info: Java HotSpot(TM) Client VM (14.2-b01) for windows-x86 JRE (1.6.0_16-b01), built on Jul 31 2009 11:26:58 by "java_re" with MS VC++ 7.1 

time: Mon Jan 16 11:52:17 2012 
elapsed time: 119 seconds 

回答

2

你的VM參數是:

jvm_args:-Xss1500K -Xms256m -Xmx1024m

這可能是爲什麼你運行了堆空間。

當您啓動Flex時,請嘗試調整memory settings

+0

是的 - 我無法找到配置ADL編譯器的JVM參數的config/ini文件。正如您指出-Xmx是1024,但FlashBuilder.ini和Eclipse.ini都設置爲512 :( – 2012-01-16 13:34:16

+0

)嘗試在您的Flex SDK目錄中搜索名爲_jvm.config_的文件。另請參閱[this](http: //livedocs.adobe.com/flex/3/html/help.html?content=configuring_environment_3.html) – Nachi 2012-01-16 13:50:46

+0

Dang,我已經嘗試過這個:(jvm參數不會在該文件中設置無論我做什麼,ADL編譯器都將其xmx設置爲1024!:( – 2012-01-16 14:03:01

0

我運行Windows 7.嘗試的

64位版本使用Java二進制文件的x64編譯。

+0

我已經嘗試了32位和64位Java運行時:( – 2012-01-24 14:39:55

+0

Hm,Java x64運行時爲我工作 - 使用x64二進制文件的VM參數要高得多(Xmx在筆記本電腦上的總容量爲16GM的8192m) – focus 2012-01-24 16:35:24

+0

在嘗試x64之前運行時,我嘗試在adt.jar中修補com.adobe.air.ipa.AOTCompiler類以增加硬編碼的x86 VM參數,它只是部分成功 - 編譯過程能夠克服以前崩潰的地方,但它崩潰了後來出現了一些新的(不是關於內存)錯誤,可能是因爲Java類補丁,你可以嘗試使用類似JavaBite的方法來修補它,只是爲了檢查它是否因內存不足而崩潰。關於內存(我無法看到任何OutOfMemoryError),這是另一回事 – focus 2012-01-24 16:43:50

0

有這樣一種工具,就像http://visualvm.java.net/

蘋果的探查實用工具類似,您可以用它來連接到您的Eclipse會議並記錄內存使用情況,以證明以前的職位,或者你可以決定過程中發生故障的點編譯成ARM二進制文件。

另一種方法是嘗試使用具有特定選項的ANT編譯器。

或者至少做一個失敗的證明項目並公開,所以人們也可以測試它。

0

即使你有大的物理內存,也並不意味着它就夠了。使用大量內存進行編譯和大小的Flex可能(或不可能)取決於您製作的項目大小。 Windows有很好的技術來交換內存來使用硬盤空間來擴展RAM。請確保您有足夠的可用磁盤空間和安裝程序交換以使用該磁盤。請使用此指令檢查窗口中的交換/分頁設置:http://helpx.adobe.com/x-productkb/global/set-virtual-memory-paging-default.html

P.S.我有同樣的問題,並解決它我只是釋放系統驅動器中的幾個千兆字節的空間,之後在Flex for iOS編譯是好的。