急!郁闷阿,jacob调用COM组件导致内存溢出

wuboy2000 2010-06-08 06:03:31
最近公司做项目,需要用我们的Java程序调用第三方的指纹考勤COM组件。
我采用Jacob组件来实现,能够得到COM组件的对象了,但是在调用相应的方法时,突然抛出异常,大概是内存溢出的错误。代码如下:
=========================================================================================================
import com.jacob.activeX.*;
import com.jacob.com.*;

public class Test {
private Dispatch dispatch;
private ActiveXComponent com;

public static void main(String[] args){
System.out.println(Runtime.getRuntime().freeMemory());
System.out.println(Runtime.getRuntime().totalMemory());
Test test=new Test();

ComThread.InitSTA();
test.com=new ActiveXComponent("YsAc.YsApoCheck");
test.dispatch=test.com.getObject();

Variant v=Dispatch.call(test.dispatch, "ApothecaryCheck");

ComThread.Release();
}

}
=========================================================================================================



当程序运行到语句“Variant v=Dispatch.call(test.dispatch, "ApothecaryCheck");”时,系统异常,信息如下:
=========================================================================================================
197551696
199229440
#
# An unexpected error has been detected by Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x73d311c7, pid=5444, tid=5440
#
# Java VM: Java HotSpot(TM) Client VM (10.0-b19 mixed mode, sharing windows-x86)
# Problematic frame:
# C [MFC42.DLL+0x11c7]
#
# An error report file with more information is saved as:
# E:\COM\hs_err_pid5444.log
#
# 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 (0x003f5c00): JavaThread "main" [_thread_in_native, id=1164, stack(0x008d0000,0x00920000)]

siginfo: ExceptionCode=0xc0000005, reading address 0x00000004

Registers:
EAX=0x00000000, EBX=0x00000022, ECX=0x00000000, EDX=0x00000006
ESP=0x0091fba0, EBP=0x0091fbd0, ESI=0x030fdc30, EDI=0x00000000
EIP=0x73d311c7, EFLAGS=0x00010246

Top of Stack: (sp=0x0091fba0)
0x0091fba0: 030fdc30 73d36c03 00140e72 00000000
0x0091fbb0: 00000022 030f73c0 031c96c6 030f73c0
0x0091fbc0: 030f73c0 0091fdc8 031cbf09 00000009
0x0091fbd0: 0091fc2c 031c7166 030f73c0 031c7190
0x0091fbe0: 0091fc3c 003f5cf4 10001765 030f73c0
0x0091fbf0: 003f5c00 26a36510 26a36510 00959c91
0x0091fc00: 003f5cf4 0091fc3c 003f6434 0091fc0c
0x0091fc10: 26a36510 0091fc3c 26a3ac10 00000000

Instructions: (pc=0x73d311c7)
0x73d311b7: 3c de 05 00 5e c2 04 00 cc cc cc cc cc 8b ff 56
0x73d311c7: 8b 71 04 85 f6 75 04 33 c0 eb 22 57 8b 7c 24 0c


Stack: [0x008d0000,0x00920000], sp=0x0091fba0, free space=318k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [MFC42.DLL+0x11c7]
C [YsAc.dll+0x7166]
v ~BufferBlob::Interpreter
v ~BufferBlob::Interpreter
v ~BufferBlob::Interpreter
v ~BufferBlob::Interpreter
v ~BufferBlob::StubRoutines (1)

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
v ~BufferBlob::Interpreter
v ~BufferBlob::Interpreter
v ~BufferBlob::Interpreter
v ~BufferBlob::Interpreter
v ~BufferBlob::Interpreter
v ~BufferBlob::StubRoutines (1)

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

Java Threads: ( => current thread )
0x02bc9c00 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=7456, stack(0x02e40000,0x02e90000)]
0x02bc7400 JavaThread "CompilerThread0" daemon [_thread_blocked, id=4624, stack(0x02df0000,0x02e40000)]
0x02bc2c00 JavaThread "Attach Listener" daemon [_thread_blocked, id=7460, stack(0x02da0000,0x02df0000)]
0x02bcd800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=6220, stack(0x02d50000,0x02da0000)]
0x02b81c00 JavaThread "Finalizer" daemon [_thread_blocked, id=7452, stack(0x02d00000,0x02d50000)]
0x02b7d800 JavaThread "Reference Handler" daemon [_thread_blocked, id=5336, stack(0x02cb0000,0x02d00000)]
=>0x003f5c00 JavaThread "main" [_thread_in_native, id=1164, stack(0x008d0000,0x00920000)]

Other Threads:
0x02b7c400 VMThread [stack: 0x02c60000,0x02cb0000] [id=5044]
0x02bd6800 WatcherThread [stack: 0x02e90000,0x02ee0000] [id=7412]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
def new generation total 92160K, used 1638K [0x13dd0000, 0x1a1d0000, 0x1a1d0000)
eden space 81920K, 2% used [0x13dd0000, 0x13f699b0, 0x18dd0000)
from space 10240K, 0% used [0x18dd0000, 0x18dd0000, 0x197d0000)
to space 10240K, 0% used [0x197d0000, 0x197d0000, 0x1a1d0000)
tenured generation total 102400K, used 0K [0x1a1d0000, 0x205d0000, 0x269d0000)
the space 102400K, 0% used [0x1a1d0000, 0x1a1d0000, 0x1a1d0200, 0x205d0000)
compacting perm gen total 12288K, used 547K [0x269d0000, 0x275d0000, 0x2a9d0000)
the space 12288K, 4% used [0x269d0000, 0x26a58e90, 0x26a59000, 0x275d0000)
ro space 8192K, 62% used [0x2a9d0000, 0x2aed28e8, 0x2aed2a00, 0x2b1d0000)
rw space 12288K, 52% used [0x2b1d0000, 0x2b8185d8, 0x2b818600, 0x2bdd0000)

Dynamic libraries:
0x00400000 - 0x00423000 C:\Program Files\Java\jre1.6.0_04\bin\javaw.exe
0x7c920000 - 0x7c9b6000 C:\WINDOWS\system32\ntdll.dll
0x7c800000 - 0x7c91e000 C:\WINDOWS\system32\kernel32.dll
0x77da0000 - 0x77e49000 C:\WINDOWS\system32\ADVAPI32.dll
0x77e50000 - 0x77ee2000 C:\WINDOWS\system32\RPCRT4.dll
0x77fc0000 - 0x77fd1000 C:\WINDOWS\system32\Secur32.dll
0x77d10000 - 0x77da0000 C:\WINDOWS\system32\USER32.dll
0x77ef0000 - 0x77f39000 C:\WINDOWS\system32\GDI32.dll
0x76300000 - 0x7631d000 C:\WINDOWS\system32\IMM32.DLL
0x62c20000 - 0x62c29000 C:\WINDOWS\system32\LPK.DLL
0x73fa0000 - 0x7400b000 C:\WINDOWS\system32\USP10.dll
0x7c340000 - 0x7c396000 C:\Program Files\Java\jre1.6.0_04\bin\msvcr71.dll
0x6d7c0000 - 0x6da10000 C:\Program Files\Java\jre1.6.0_04\bin\client\jvm.dll
0x76b10000 - 0x76b3a000 C:\WINDOWS\system32\WINMM.dll
0x6d270000 - 0x6d278000 C:\Program Files\Java\jre1.6.0_04\bin\hpi.dll
0x76bc0000 - 0x76bcb000 C:\WINDOWS\system32\PSAPI.DLL
0x6d770000 - 0x6d77c000 C:\Program Files\Java\jre1.6.0_04\bin\verify.dll
0x6d310000 - 0x6d32f000 C:\Program Files\Java\jre1.6.0_04\bin\java.dll
0x6d7b0000 - 0x6d7bf000 C:\Program Files\Java\jre1.6.0_04\bin\zip.dll
0x10000000 - 0x1002c000 C:\WINDOWS\system32\jacob-1.15-M3-x86.dll
0x76990000 - 0x76acd000 C:\WINDOWS\system32\ole32.dll
0x77be0000 - 0x77c38000 C:\WINDOWS\system32\msvcrt.dll
0x770f0000 - 0x7717b000 C:\WINDOWS\system32\OLEAUT32.dll
0x5adc0000 - 0x5adf7000 C:\WINDOWS\system32\uxtheme.dll
0x74680000 - 0x746cc000 C:\WINDOWS\system32\MSCTF.dll
0x76fa0000 - 0x7701f000 C:\WINDOWS\system32\CLBCATQ.DLL
0x77020000 - 0x770ba000 C:\WINDOWS\system32\COMRes.dll
0x77bd0000 - 0x77bd8000 C:\WINDOWS\system32\VERSION.dll
0x031c0000 - 0x031d7000 E:\Wulijun\StudyWS\COM\bin\YsAc.dll
0x73540000 - 0x7357d000 C:\WINDOWS\system32\ODBC32.dll
0x5d170000 - 0x5d20a000 C:\WINDOWS\system32\COMCTL32.dll
0x76320000 - 0x76367000 C:\WINDOWS\system32\comdlg32.dll
0x7d590000 - 0x7dd84000 C:\WINDOWS\system32\SHELL32.dll
0x77f40000 - 0x77fb6000 C:\WINDOWS\system32\SHLWAPI.dll
0x73d30000 - 0x73e2e000 C:\WINDOWS\system32\MFC42.DLL
0x5efe0000 - 0x5eff7000 C:\WINDOWS\system32\OLEPRO32.DLL
0x71a40000 - 0x71a4b000 C:\WINDOWS\system32\WSOCK32.dll
0x71a20000 - 0x71a37000 C:\WINDOWS\system32\WS2_32.dll
0x71a10000 - 0x71a18000 C:\WINDOWS\system32\WS2HELP.dll
0x762f0000 - 0x762f5000 C:\WINDOWS\system32\MSIMG32.dll
0x77180000 - 0x77283000 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\comctl32.dll
0x03260000 - 0x03277000 C:\WINDOWS\system32\odbcint.dll
0x61be0000 - 0x61bed000 C:\WINDOWS\system32\MFC42LOC.DLL
0x75e00000 - 0x75eae000 C:\WINDOWS\system32\SXS.DLL
0x73640000 - 0x7366e000 C:\WINDOWS\system32\msctfime.ime
0x03410000 - 0x0341f000 C:\jdk1.6.0_04\bin\MXFpDll.dll
0x03420000 - 0x03431000 C:\jdk1.6.0_04\bin\mxfpcusb.dll
0x76060000 - 0x761b6000 C:\WINDOWS\system32\SETUPAPI.dll
0x719c0000 - 0x719fe000 C:\WINDOWS\system32\mswsock.dll
0x60fd0000 - 0x61025000 C:\WINDOWS\system32\hnetcfg.dll
0x71a00000 - 0x71a08000 C:\WINDOWS\System32\wshtcpip.dll

VM Arguments:
jvm_args: -Xmn100M -Xms200M -Xmx300M
java_command: Test
Launcher Type: SUN_STANDARD

Environment Variables:
JAVA_HOME=C:\jdk1.6.0_04
CLASSPATH=.;C:\jdk1.6.0_04\lib;C:\jdk1.6.0_04\lib\tools.jar
PATH=C:\Program Files\Java\jre1.6.0_04\bin\client;C:\Program Files\Java\jre1.6.0_04\bin;C:\Program Files\Java\jre1.6.0_04\bin\client;C:\Program Files\Java\jre1.6.0_04\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\jdk1.6.0_04\bin;E:\Wulijun\maven\bin;E:\Wulijun\Oracle\bin;C:\Program Files\Oracle\jre\1.3.1\bin;C:\Program Files\Oracle\jre\1.1.8\bin;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Microsoft SQL Server\80\Tools\BINN;C:\Program Files\Microsoft Visual Studio\Common\Tools\WinNT;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;C:\Program Files\Microsoft Visual Studio\Common\Tools;C:\Program Files\Microsoft Visual Studio\VC98\bin;C:\Program Files\StormII\Codec;C:\Program Files\StormII
USERNAME=Administrator
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 6 Model 15 Stepping 13, GenuineInte

=========================================================================================================

我已经设置了-Xmn100M -Xms200M -Xmx300M参数,并且从上面的运行结果看到可用内存也有小200M。
郁闷,望哪位高人给指点下阿?!
...全文
478 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧