Sponsor Reklam 


04.11.2008 (21:04)

 Dizi Aşımı Derleyici Hatası 
Bildiğimiz üzere Java'da Exception sınıfını genişleten ArrayIndexOutOfBoundsException sınıfı dizi sınırı aşımlarında çalışma zamanı hatasını (run time error) yakalar. Fakat bu durum derleyiciye bağlı olarak değişmektedir.

512X512'lik bir integer matrisinde -1. indisten 512. indis dahil olmak üzere tutulan değerler toplanmak istendiğinde try-catch mekanizması ile her satır için 2 defa (-1 ve 512. indislerde) ArrayIndexOutOfBoundsException oluşmalı ve yakalanmalıdır. Fakat NetBeans'te sorun çıkmazken JBuilder'da Heap ile ilgili sorun çıkmakta ve şu çıktıyı vermektedir:

Unexpected Signal : EXCEPTION_FLT_STACK_CHECK (0xc0000092) occurred at PC=0xCCBBD2
Function=[Unknown.]
Library=(N/A)

NOTE: We are unable to locate the function name symbol for the error
      just occurred. Please refer to release documentation for possible
      reason and solutions.


Current Java thread:

Dynamic libraries:
0x00400000 - 0x00408000 C:\JBuilderX\jdk1.4\bin\javaw.exe
0x7C8F0000 - 0x7C99F000 C:\WINDOWS\system32\ntdll.dll
0x7C800000 - 0x7C8EE000 C:\WINDOWS\system32\kernel32.dll
0x77DC0000 - 0x77E6B000 C:\WINDOWS\system32\ADVAPI32.dll
0x77E70000 - 0x77F01000 C:\WINDOWS\system32\RPCRT4.dll
0x77D30000 - 0x77DC0000 C:\WINDOWS\system32\USER32.dll
0x77F10000 - 0x77F56000 C:\WINDOWS\system32\GDI32.dll
0x77C00000 - 0x77C58000 C:\WINDOWS\system32\MSVCRT.dll
0x00820000 - 0x00893000 C:\DOCUME~1\ZGRMER~1\LOCALS~1\Temp\uqb26.tmp
0x5D5E0000 - 0x5D677000 C:\WINDOWS\system32\COMCTL32.DLL
0x71B10000 - 0x71B22000 C:\WINDOWS\system32\MPR.DLL
0x774D0000 - 0x7760C000 C:\WINDOWS\system32\OLE32.DLL
0x77110000 - 0x7719C000 C:\WINDOWS\system32\OLEAUT32.DLL
0x71AC0000 - 0x71AC9000 C:\WINDOWS\system32\WSOCK32.DLL
0x71AA0000 - 0x71AB7000 C:\WINDOWS\system32\WS2_32.dll
0x71A90000 - 0x71A98000 C:\WINDOWS\system32\WS2HELP.dll
0x08000000 - 0x08136000 C:\JBuilderX\jdk1.4\jre\bin\client\jvm.dll
0x76B30000 - 0x76B5D000 C:\WINDOWS\system32\WINMM.dll
0x10000000 - 0x10007000 C:\JBuilderX\jdk1.4\jre\bin\hpi.dll
0x00A60000 - 0x00A6E000 C:\JBuilderX\jdk1.4\jre\bin\verify.dll
0x00A70000 - 0x00A88000 C:\JBuilderX\jdk1.4\jre\bin\java.dll
0x00A90000 - 0x00A9D000 C:\JBuilderX\jdk1.4\jre\bin\zip.dll


****************
Another exception has been detected while we were handling last error.
Dumping information about last error:
ERROR REPORT FILE = (N/A)
PC                = 0x00ccbbd2
SIGNAL            = -1073741678
FUNCTION NAME    = (N/A)
OFFSET            = 0xFFFFFFFF
LIBRARY NAME      = (N/A)
Please check ERROR REPORT FILE for further information, if there is any.
Good bye.
0x76C80000 - 0x76CA8000 C:\WINDOWS\system32\imagehlp.dll
0x59CA0000 - 0x59D41000 C:\WINDOWS\system32\DBGHELP.dll
0x77BF0000 - 0x77BF8000 C:\WINDOWS\system32\VERSION.dll
0x76BE0000 - 0x76BEB000 C:\WINDOWS\system32\PSAPI.DLL

Heap at VM Abort:
Heap
def new generation  total 1152K, used 808K [0x10010000, 0x10140000, 0x104f0000)
  eden


JBuilder'da sadece büyük boyutlu diziler değil küçük boyutlu dizilerdeki benzer işlemde de bu duruma raslanabilmektedir. 512X512'lik matriste sınır aşmadan işlem yapılabilmekte fakat aksine 512X4'te sınır aşımı var ise sorun çıkması kafa karıştırıcıdır. Eğer gerçekten de heap seviyesi sorunu, hafıza yetmezliği var ise ilgili ayarlar yapılarak daha fazla hafıza alanı verilmelidir veya farklı derleyicilerde de denemeler yapılmalıdır. Hafıza (heap, stack, memory, jvm) ayarı için buraya bakınız.
Imza: admin








Yazilar kaynak gosterilmeden kopyalanamaz © www.kodcu.net // Twitter