JAVA_OPTS ,顾名思义,是用来设置JVM相关运行参数的变量。
JVM:JAVA_OPTS="-server -Xms2048m -Xmx2048m -Xss512k"
-server:一定要作为第一个参数,在多个CPU时性能佳
-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些
-Xmx:java heap最大值,使用的最大内存
上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。
-XX:PermSize:设定内存的永久保存区域
-XX:MaxPermSize:设定最大内存的永久保存区域
-XX:MaxNewSize:
-Xss 15120 这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k.
+XX:AggressiveHeap 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。
-Xss:每个线程的Stack大小
-verbose:gc 现实垃圾收集信息
-Xloggc:gc.log 指定垃圾收集日志文件
-Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一
-XX:+UseParNewGC :缩短minor收集的时间
-XX:+UseConcMarkSweepGC :缩短major收集的时间
提示:此选项在Heap Size 比较大而且Major收集时间较长的情况下使用更合适。
#有针对Java运行环境继续内存不足。
#本机内存分配(malloc的)未能分配ChunkPool32756字节:分配
#可能的原因:
#该系统是出了物理RAM或交换空间
#在32位模式下,进程大小限制被击中
#可能的解决方案:
#减少内存系统上的负载
#增加物理内存或交换空间
#检查交换后备存储已满
#使用64位操作系统上的64位Java
#减少Java堆大小(-Xmx/-Xms)
#减少Java的线程数
#减少Java线程堆栈大小(- XSS)**********
#设置更大的代码缓存使用- XX:ReservedCodeCacheSize=
#这个输出文件可能被截断或不完整的。
#
#内存不足的错误(allocation.cpp:211),PID=3696,TID=3704
#
#JRE版本:6.0_26- B03
#Java虚拟机:的Java HotSpot(TM)客户端虚拟机(20.1- B02混合模式,共享窗口- X86)
----------------------------------------------------
我看了一下日志,线程数在3000多个,我了解的也是这样,当线程超过3000多的时候,就出内存问题。
下面是摘抄网上关于JVM线程堆栈的相关内容:
JVM线程堆栈
应用程序中的每个线程都需要内存来存储器堆栈(用于在调用函数时持有局部变量并维护状态的内存区域)。每个 Java 线程都需要堆栈空间来运行。
根据实现的不同,Java 线程可以分为本机线程和 Java 堆栈。除了堆栈空间,每个线程还需要为线程本地存储(thread-local storage)和内部数据结构提供一些本机内存。
JVM堆栈大小
-Xss 128k:设置每个线程的堆栈大小。JDK5.0以后每个线程堆 栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。
在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一 个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
JVM heap与JVM私有内存、JVM线程堆栈大小间的关系及平衡。
线程栈的大小是个双刃剑,如果设置过小,可能会出现栈溢出,特别是在该线程内有递归、大的循环时
时出现溢出的可能性更大,如果该值设置过大,就有影响到创建栈的数量,如果是多线程的应用,就会
出现内存溢出的错误.
jvm调优见:http://developer.51cto.com/art/201201/311743.htm
http://pengjiaheng.iteye.com/blog/552456
jvm最大线程数:http://sesame.iteye.com/blog/622670
http://www.cnblogs.com/mingforyou/archive/2012/03/03/2378143.html
http://fuliang.iteye.com/blog/673251
分享到:
相关推荐
通过上述配置方法,可以在一定程度上缓解Eclipse和Tomcat中出现的内存溢出问题。需要注意的是,合理地配置内存参数不仅可以避免内存溢出的发生,还能提高应用程序的性能和稳定性。在实际开发过程中,应根据项目的...
### Tomcat与Eclipse配置内存溢出解决方案 #### 背景介绍 在进行Web应用程序开发过程中,尤其是在使用Tomcat服务器结合Eclipse或MyEclipse等集成开发环境(IDE)时,开发者可能会遇到一个常见的问题——内存溢出。...
JAVA内存溢出 JAVA中OutOfMemoryError(内存溢出)的三...OutOfMemoryError是Java开发中的一种常见错误,了解JVM的内存管理机制和OutOfMemoryError的三种情况及其解决方法,对于解决Java开发中内存溢出问题非常重要。
添加:JAVA_OPTS=’-Xms512m -Xmx1024m’ 或者 JAVA_OPTS=”-server -Xms800m -Xmx800m -XX:MaxNewSize=256m” 或者 CATALINA_OPTS=”-server -Xms256m -Xmx300m” Windows服务器: 在/apache-tomcat-5.5.23/bin ...
不合适的内存配置不仅可能导致应用程序性能下降,还可能引发一系列的内存溢出错误,如`OutOfMemoryError`。本文将详细介绍如何为Java虚拟机(JVM)设置内存参数,以及在不同场景下进行有效配置的方法。 #### 二、JVM...
### Java Excel导出Tomcat内存溢出处理方法 在Java应用开发过程中,特别是在进行大量数据处理如Excel导出等操作时,经常会遇到Tomcat服务器内存溢出的问题。内存溢出是指程序运行时申请的内存超过了系统能提供的...
### Maven内存溢出解决方案 #### 一、引言 在使用Maven进行项目构建时,尤其是在处理大型项目或执行资源密集型任务(如`mvn site`)时,经常会遇到Java堆空间溢出的问题。这类问题通常是由于Maven运行所需的内存...
在Java开发过程中,特别是在使用Eclipse作为集成开发环境(IDE)并结合Apache Tomcat服务器进行Web应用开发时,经常会遇到内存溢出的问题。这类问题通常表现为应用程序运行过程中出现OutOfMemoryError(OOM)错误,...
总结来说,解决MyEclipse内存溢出问题需要理解Java内存模型和JVM参数设置,合理分配堆内存、新生代和永久代的大小。通过监控和调整这些参数,可以有效地避免内存溢出问题,提升应用的稳定性和性能。
set JAVA_OPTS=%JAVA_OPTS% -server -Xms800m -Xmx800m -XX:MaxNewSize=512m ``` 上述命令将JVM的初始堆大小和最大堆大小均设置为800MB,新生代最大大小设置为512MB。这些参数应根据具体的应用场景和服务器资源...
【JVM内存溢出】指的是Java...总的来说,解决JVM内存溢出问题需要深入了解Java内存模型,合理配置JVM参数,并结合性能监控工具进行诊断和优化。这不仅可以避免服务器因内存问题崩溃,还能提升整体系统的稳定性和性能。
通过合理设置JVM参数,不仅可以解决内存溢出问题,还可以提高系统的稳定性和性能。此外,对于某些特定类型的问题,还需要考虑操作系统的限制和配置。希望以上内容能够帮助您有效地解决内存溢出问题。
这表明当前分配给Java虚拟机(JVM)的内存不足以支持程序正常运行,即发生了所谓的内存溢出错误。 #### 二、内存溢出原因分析 内存溢出通常是由以下几种情况导致的: 1. **应用程序内存消耗过高**:应用程序中...
本文将详细介绍Tomcat内存溢出之解决方法,包括问题分析、解决方法和结论。 问题分析: Tomcat内存溢出是由于JVM的虚拟内存默认为128M,当超过这个值时就把先前占用的内存释放,而导致出现HTTP500的错误。当用户...
如果没有正确配置最大堆内存限制,也可能导致内存溢出问题。 #### 三、解决方案 针对以上问题,可以通过以下几种方式来解决: 1. **调整JVM堆内存大小**: - 使用`-Xms`参数设置初始堆大小,例如:`-Xms256m`。 ...
在IT领域,特别是Java应用服务器环境,如Apache Tomcat中,遇到`java.lang.OutOfMemoryError`异常是常见的性能瓶颈之一。...此外,优化代码逻辑、减少不必要的对象创建和使用更高效的算法也是预防内存溢出的有效手段。
### MyEclipse内存溢出问题解析与解决策略 #### 一、问题背景 在使用MyEclipse集成开发环境(IDE)进行项目开发时,开发者...通过上述方法,可以有效地解决MyEclipse中的内存溢出问题,提高开发效率和系统的稳定性。