Java 64位机器上的JVM 32位崩溃

Java 64位机器上的JVM 32位崩溃,java,jvm,Java,Jvm,我的Java应用程序JVM(1.6.0_26,32位)在关闭此Java应用程序时偶尔发生崩溃。 这种间歇性JVM崩溃问题似乎只影响64位Windows操作系统 此问题在32位Windows OS和Mac OS X上不会发生。 谁能告诉我原因吗。 实际上,这个java应用程序使用100-150个库,并且在执行时不会崩溃,一旦应用程序关闭,就会发生崩溃。 在64位机器上使用32位JVM合适吗 非常感谢您的帮助。简短的回答是否定的。在64位机器上使用32位JVM是不合适的。更长的答案是,如果您没有选择

我的Java应用程序JVM(1.6.0_26,32位)在关闭此Java应用程序时偶尔发生崩溃。 这种间歇性JVM崩溃问题似乎只影响64位Windows操作系统 此问题在32位Windows OS和Mac OS X上不会发生。 谁能告诉我原因吗。 实际上,这个java应用程序使用100-150个库,并且在执行时不会崩溃,一旦应用程序关闭,就会发生崩溃。 在64位机器上使用32位JVM合适吗


非常感谢您的帮助。

简短的回答是否定的。在64位机器上使用32位JVM是不合适的。更长的答案是,如果您没有选择,Windows 64位操作系统可以在兼容模式下运行32位程序

实际上没有必要这样做,因为64位JVM在Windows操作系统上运行良好。这也意味着您的进程可以利用比32位进程更多的内存和速度


我在64位Win7上安装了32位JVM,遇到了类似的问题,在加载第三方OLE网桥之前,一切都很好。JVM给出了一个崩溃报告,说Java二进制停止工作,崩溃报告代码值中的消息是HEAP\u MEMORY\u corrupt。但这很奇怪,因为当我附加分析器时,堆远远低于最大限制。我怀疑我的网桥提供程序执行了一些内核模式的执行(如果可能的话),这是在WOW64下进行仿真时不允许的


我解决了我的问题。当ole填充MS Office时,它无法填充2007,而当我安装2003时,它工作正常。检查您的应用程序是否立即崩溃,或者在某些本地呼叫发生时崩溃,这样您就可以查明问题所在

应用程序在关闭时是否执行任何特殊操作?特别是,任何与操作系统相关的东西?你有JVM崩溃吗?事故报告里有什么?您可以考虑在“退出”时发生的任何特殊操作,比如关闭句柄、其他JNI相关的东西等等。不做任何与OS有关的事情。我会粘贴崩溃报告。java运行时环境已经检测到致命错误:在p= 0x2D5C6072,PID=9580,{例外} Access违规(0xC000 00)。tid=9968###JRE版本:6.0#U 26-b03#Java虚拟机:Java热点(TM)客户端虚拟机(20.1-b02混合模式windows-x86)#问题框架:#C 0x2d5c6073##如果您想提交错误报告,请访问:##本机代码中的崩溃发生在Java虚拟机之外。#请参阅问题框架以了解报告错误的位置。由于我们的一些应用程序使用专有的32位本机数据库驱动程序,我被迫在64位Windows上使用32位JVM。64位JVM拒绝加载它们。但是,32位JVM运行良好(据我所知)。非常感谢您的输入。在64位机器上运行32位JVM的32位应用程序是否仍然有效?我在java中遇到了一个问题,为什么要共享msdn链接?msdn链接讨论了64位Windows如何运行32位进程。我认为您需要仔细阅读,看看您是否遵循了关于在64位机器上模拟32位进程的所有假设。如果您使用32位数据库驱动程序和本机代码,那么可能不是Java正在消亡。问题可能出在你的司机身上。看看你的崩溃报告,看看它崩溃的时候是什么代码。若它在驱动程序中,那个么它就是32位仿真上的驱动程序有问题的证据。您可以删除驱动程序并将Type4JDBC驱动程序与另一个数据库(如mysql)一起使用吗?我将检查链接。谢谢仅供参考:这是一个具有古老专有数据库的遗留应用程序。驱动程序是driver.dll的薄包装。当我用64位JVM加载它时,我会得到“线程中的异常”main“java.lang.unsatifiedlinkerror:C:\driver\drivername.dll:无法在AMD 64位平台上加载IA 32位.dll”虽然它在同一台机器上的32位JVM下工作正常。链接清楚地说明“但是,32位进程无法加载64位DLL以执行,而64位进程无法加载32位DLL以执行。”因此,看来我运气不好。