这几天,发现项目在64位JDK下启动,一切正常,但是换到32位的JDK下之后,启动出现java.lang.StackOverflowError异常。
关于java.lang.StackOverflowError异常,一般情况下是代码写的有问题,出现了死循环或深层次的递归调用,导致内存溢出。
但是我们的项目,除在64位JDK下正常外,部署在公司的服务器上,使用中也一切良好,因此基本排除这个可能。那么就应该是32位和64位的JDK本身的区别,导致了项目运行内存不够从而抛出异常。
根本原因,应该是项目太过庞大,纵观我们的项目,maven管理的主项目和模块项目粗略数了下,竟然达到了50个之多,在这之前已经对JVM的各项参数内存进行了加大配置,不然无法运行,配置如下:
-Xms512m -Xmx1024m -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=512m
该配置在64位的JDK下运行一切正常,但是换到32位之下后,出现上面所说的问题,加大上面配置的各项内存后,发现问题依旧。
对比32位和64位JDK的各项默认参数配置,发现线程的默认堆栈大小32位JVM,默认堆栈最大是320k 而64位JVM是1024K,看来网上所说JDK 5.0之后已经默认为1M是针对64位而言,将32位JDK的线程堆栈加大,问题解决。
配置如下,添加了-Xss1024k:
-Xms512m -Xmx1024m -Xss1024k -XX:PermSize=128M -XX:MaxNewSize=256m -XX:MaxPermSize=512m
这只是权宜之计,关键所在还是项目规划要做好啊!!
相关推荐
本项目针对这个问题进行了优化,使得Zxing库能在JDK 1.6环境下正常运行。 一、JDK版本兼容性问题 Java Development Kit (JDK) 的不同版本可能包含不同的API和语言特性。JDK 1.7引入了一些新的特性和改进,如try-...
通过在try语句块中声明资源,当程序执行完毕或出现异常时,资源会自动关闭,避免了内存泄漏和资源未释放的问题。 3. **多线程并行GC优化**:JDK 7改进了垃圾收集器,尤其是G1(Garbage-First)收集器,提高了应用的...
这个版本是针对Windows 64位操作系统设计的,确保在64位环境下能够正常工作,为开发者提供了必要的工具和库。 **主要特性与改进:** 1. **泛型(Generics)**:这是JDK 1.5引入的一项重大特性,允许在定义类、接口...
当使用JDK 8u231开发或运行需要串行通信功能的Java应用时,如果没有正确地包含RXTXcomm.jar,程序可能会出现异常或者崩溃。这是因为JDK本身并不包含对所有串行通信功能的完整支持,而RXTX提供了这些缺失的功能。因此...
本教程将围绕"SpringCloud+JDK17整合EaseExcel"这一主题,深入探讨如何在Spring Cloud项目中利用EaseExcel进行数据交互。 首先,我们来看Spring Cloud的基础知识。Spring Cloud是一系列框架的有序集合,它为开发者...
如果一切顺利,应用应该能在JDK 1.8环境下正常运行。 6. **测试**:运行应用并进行功能测试,确保所有功能都能正常工作。若有任何异常,根据错误信息进行调试和修复。 在【压缩包子文件的文件名称列表】中,只提到...
在Java开发领域,Maven、JDK和Spring Boot是三个至关重要的组件,它们共同构建了高效、便捷的开发环境。让我们深入探讨这三个组件以及在实际使用中可能遇到的问题。 首先,Maven是一个项目管理和综合工具,它通过...
在压缩包中,`jdk版本问题说明.txt`文件可能包含了如何解决Jocky在不同JDK版本中可能出现的问题。通常,这些问题可能涉及依赖库的兼容性、API调用的差异或者特定版本的编译选项。阅读这个文档将帮助开发者了解如何...
在本场景中,我们关注的是两个特定的组件:Commons Files 1.3 和 Commons IO 2.2,它们在 JDK 1.6 的环境下被证实可以正常工作,用于实现视频上传功能。 首先,让我们深入了解一下 Apache Commons Files 1.3。这个...
本文将深入探讨在Java中使用JDK运行程序时可能出现的一些常见问题,并提供相应的解决策略。 1. **字符编码问题** 在描述中提到的问题主要涉及字符编码。Java源代码默认使用UTF-8编码,但如果你使用记事本或其他不...
"json-lib-2.4-jdk15" 版本特别强调了与JDK 1.5的兼容性,这意味着即使在较旧的Java环境下,也可以正常使用此库进行JSON处理。 6. **性能与优化** 虽然json-lib 是一个功能丰富的库,但随着技术的发展,后来出现...
然而,近期一个在RocketMQ项目中发现的问题揭示了一个隐藏的陷阱:在多线程环境下,使用`LinkedBlockingQueue`的`stream`遍历可能会导致意料之外的问题,甚至出现死循环。 首先,`LinkedBlockingQueue`为何被视为...
《jwfd开源工作流在JDK1.8和Windows7环境下的应用与优化》 在信息化日益发展的今天,工作流管理系统(Workflow Management System, WMS)已经成为企业提高效率、规范流程的重要工具。jwfd是一款开源的工作流引擎,...
- **版本控制**:混淆前做好代码版本备份,以便在出现问题时能快速恢复原始代码。 - **文档更新**:混淆后的类名和方法名变得难以理解,所以混淆前应更新相应的API文档和注释。 综上所述,Jocky1.0.3是一款强大的...
在进行Linux环境下项目的部署与运维过程中,经常会遇到各种各样的异常问题。本文将基于一则具体的案例来深入剖析一种常见的异常情况——“页面URL访问呈现空白页”,并进一步探讨其背后的深层次原因及解决方案。 ##...
通常情况下,开发者在选择Spring版本和JDK版本时需留意兼容性,否则可能会遇到不兼容的问题,这将导致应用程序在运行时出现错误。 不兼容问题主要表现为运行时异常,例如java.lang.IllegalArgumentException,这...
确保下载正确版本的二进制文件,例如 `jdk-6u20-linux-i586.bin`。 - 将下载的JDK文件复制到 `/opt` 目录下,并赋予执行权限。这可以通过命令 `#cp XX /opt/` 和 `#chmod a+x jdk-6u20-linux-i586.bin` 实现。 - ...
这意味着如果用户的操作系统是32位的,这个版本的JPype可能无法正常工作。64位版本通常能够处理更大的内存和更复杂的计算任务,但也需要相应的64位Python环境。 【压缩包子文件的文件名称列表】: JPype-0.5.4.2 这...
使用IDEA和Maven可以方便地进行项目开发和管理 HOWEVER,有时在使用IDEA和Maven进行项目编译和运行时,却会出现一些问题,本文将详细介绍解决IDEA使用Maven编译正常但是运行项目时却提示很多jar包找不到的问题。...
同时,需要注意处理异常,确保在出现错误时能够优雅地关闭连接。 总的来说,JSCH是一个强大的工具,使得Java开发者能够方便地集成SSH2功能,尤其在处理SFTP操作时。通过"jsch版本50-53.rar",开发者可以获取多个...