使用Java程序从数据库中查询大量的数据时出现异常:java.lang.OutOfMemoryError: Java heap space
在JVM中如果98%的时间是用于GC且可用的 Heap size 不足2%的时候将抛出此异常信息。
JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行设置。
例如:java -jar -Xmn16m -Xms64m -Xmx128m MyApp.jar
如果Heap Size设置偏小,除了这些异常信息外,还会发现程序的响应速度变慢了。GC占用了更多的时间,而应用分配到的执行时间较少。
Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。
Heap size的 -Xms -Xmn 设置不要超出物理内存的大小。否则会提示“Error occurred during initialization of VM Could not reserve enough space for object heap”。
这个问题的根源是jvm虚拟机的默认Heap大小是64M,可以通过设置其最大和最小值来实现.设置的方法主要是几个.
1.可以在windows 更改系统环境变量加上JAVA_OPTS=-Xms64m -Xmx512m
2,如果用的tomcat,在windows下,可以在C:\tomcat5.5.9\bin\catalina.bat 中加上:
set JAVA_OPTS=-Xms64m -Xmx256m
位置在: rem Guess CATALINA_HOME if not defined 这行的下面加合适.
3.如果是linux系统
Linux 在{tomcat_home}/bin/catalina.sh的前面,加 set JAVA_OPTS='-Xms64 -Xmx512'
- 浏览: 241196 次
- 性别:
- 来自: 深圳
最新评论
-
satanrad:
非常感谢分享,我也碰见一样的问题。还以为机器上的JDK版本过高 ...
Nexus 启动报错(win7 32位 jdk1.6) -
FX夜归人:
FX夜归人 写道能不能解释下 0.50000000001?3Q ...
js格式化金额 -
FX夜归人:
能不能解释下 0.50000000001?3Q
js格式化金额 -
wzmmao:
您好,在问答频道看到您说到DHTMLX,我也是刚接触这个,不知 ...
EXTJS4.0 用法笔记~~ 3种和后台交互数据的方法
相关推荐
Redis 是一个开源的 key-value 数据库,提供了丰富的数据类型、事务、持久化、虚拟内存等功能。下面是 Redis 入门相关的知识点总结: 环境搭建 * Redis 是一个开源的 key-value 数据库 * Redis 提供了丰富的数据...
`VirtualMemorySize64`则包括了进程的虚拟地址空间大小,这不仅包括已分配的内存,还包括预留但尚未使用的内存。 为了提高性能,可以考虑使用缓存策略。例如,可以定期获取系统资源信息并存储在内存中,然后在需要...
MySQL内存及虚拟内存优化是数据库性能调优的重要环节,尤其是在处理大量数据或高并发查询时,合理的内存设置能显著提升数据库的响应速度和整体效率。以下是对MySQL内存及虚拟内存优化设置参数的详细解释: 1. **...
虚拟内存(Virtual Memory)是 Windows 平台服务器中的一种技术,用于解决内存不足的问题。虚拟内存是指硬盘空间的一部分,用于充当内存使用。虚拟内存也被称为“页面文件”,存在于硬盘上的 PAGEFILE.SYS 文件中。 ...
2. **资源占用**: 相比Apache等其他Web服务器,Nginx占用更少的内存和其他系统资源。 3. **模块化设计**: Nginx采用了静态编译的模块化架构,使得其配置更加简洁且易于维护。 4. **热部署能力**: 在不中断服务的情况...
通过以上介绍,我们可以了解到Redis内存模型的核心概念,包括数据类型的定义、持久化机制的选择以及如何利用虚拟内存机制和主从复制机制来优化Redis的应用性能。这些知识点对于深入理解Redis的工作原理和高效使用...
- 在Windows XP系统中,还需要注意虚拟内存的配置,避免因物理内存不足而导致频繁的页面交换。 通过上述措施,可以在保证Oracle 10g正常运行的同时,显著降低其在Windows XP环境下的内存占用,确保系统整体性能...
请注意,这并不意味着实际物理内存会增加,而是允许进程使用更多的虚拟内存。 3. 输入命令后,你需要重新启动计算机以使更改生效。重启后,系统将按照新的设置分配内存。 如果之后需要恢复原来的设置,可以执行...
IBM服务器内存技术包括DIMM、RDIMM、LRDIMM等,HP服务器内存技术有SmartMemory,chicpkill是一种内存保护技术,Hpecc是硬件错误校验和控制。 四、系统总线技术 计算机系统总线经历了ISA、VESA、PCI、PCI-X、PCI-E等...
如您所见,brk() 或者 mmap() 都可以用来向我们的进程添加额外的虚拟内存。在我们的例子中将使用 brk(),因为它更简单,更通用。 实现一个简单的分配程序 如果您曾经编写过很多 C 程序,那么您可能曾多次使用过 ...
Tomcat内存溢出是由于JVM的虚拟内存默认为128M,当超过这个值时就把先前占用的内存释放,而导致出现HTTP500的错误。当用户执行一个大数据的应用时,系统会提示出错,前台错误为:HTTP Status 500-Dispatch[EAITool] ...
RISC(Reduced Instruction Set Computing,精简指令集计算)服务器是高性能计算领域的重要组成部分,尤其是在Unix操作系统下,它们展现了卓越的稳定性和处理能力。在Unix服务器市场,尽管近年来市场份额有所下滑,...
比如,了解驻留集(Resident Set Size, RSS)、虚拟内存(Virtual Memory)、分页(Paging)和交换(Swapping)等概念,可以帮助我们更好地分析内存使用情况。例如,当系统频繁进行页面交换,可能导致性能下降,这时...
- 再创建一个实例,类别为"Memory",计数器为"Commit Total",这表示已分配给进程的虚拟内存总和。 - 内存占用率可以通过(Commit Total - Available MBytes) / Commit Total * 100来计算。 接下来,我们转向获取...
按照功能应用,服务器可以分为多种类型,包括域控制服务器、文件服务器、打印服务器、数据库服务器、邮件服务器、Web服务器、多媒体服务器、通讯服务器、终端服务器、基础设施服务器和虚拟化服务器。这些服务器各有...
服务器虚拟化技术是现代数据中心的重要组成部分,它允许在单个物理服务器上运行多个独立的虚拟机(VM),每个虚拟机可以运行不同的操作系统和应用程序。这有助于节省硬件成本,简化管理,并提高资源灵活性。例如,...
如您所见, brk() 或者 mmap() 都可以用来向我们的进程添加额外的虚拟内存。在我们的例子中将使用 brk(),因为它更简单,更通用。 实现一个简单的分配程序 如果您曾经编写过很多 C 程序,那么您可能曾多次使用过 ...
- **虚拟化服务器**:通过虚拟化技术在同一物理服务器上运行多个独立的虚拟环境。 服务器与个人计算机(PC)和工作站的主要区别在于服务器通常设计为长时间稳定运行,具备更高的可扩展性、冗余组件和性能优化,而PC...