本文转自:http://blog.csdn.net/lanwei6312/archive/2006/09/19/1244439.aspx
本文介绍:TOMCAT、JBOSS、WEBSPHERE中增加内存的方式,对个人的具体应用也可以通过指定参数增加内存,如本人使用的报文服务启动的时候,为了使系统运行更顺畅,并保证在有大数据的时候不会出现内存溢出的错误,因而需要指定JVM内存启动,启动方式如:
java -jar -Xms256m -Xmx512m server.jar
以下是对TOMCAT、JBOSS、WEBSPHERE内存分配的介绍:
可以给Java虚拟机设置使用的内存,但是如果你的选择不对的话,虚拟机不会补偿。可通过命令行的方式改变虚拟机使用内存的大小。如下表所示有两个参数用来设置虚拟机使用内存的大小。
参数描述
-Xms JVM初始化堆的大小
-Xmx JVM堆的最大值
这两个值的大小一般根据需要进行设置。初始化堆的大小执行了虚拟机在启动时向系统申请的内存的大小。一般而言,这个参数不重要。但是有的应用程序在大负载的情况下会急剧地占用更多的内存,此时这个参数就是显得非常重要,如果虚拟机启动时设置使用的内存比较小而在这种情况下有许多对象进行初始化,虚拟机就必须重复地增加内存来满足使用。由于这种原因,我们一般把-Xms和-Xmx设为一样大,而堆的最大值受限于系统使用的物理内存。一般使用数据量较大的应用程序会使用持久对象,内存使用有可能迅速地增长。当应用程序需要的内存超出堆的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。因此一般建议堆的最大值设置为可用内存的最大值的80%。
-------------------------------------
Tomcat默认可以使用的内存为128MB,在较大型的应用项目中,这点内存是不够的,需要调大。
Windows下,在文件{tomcat_home}/bin/catalina.bat,Unix下,在文件{tomcat_home}/bin/catalina.sh的前面,增加如下设置: JAVA_OPTS='-Xms【初始化内存大小】 -Xmx【可以使用的最大内存】'
需要把这个两个参数值调大。例如:
JAVA_OPTS='-Xms256m -Xmx512m'
表示初始化内存为256MB,可以使用的最大内存为512MB。
--------------------------------------
JBoss默认可以使用的内存为64MB
$JBOSSDIR$/bin/run.config
JAVA_OPTS = "-server -Xms128 -Xmx512"
--------------------------------------
Websphere 进入控制台去设置(暂略)
--------------------------------------
eclipse
在所在目录下,键入
eclipse.exe -vmargs -Xms256m -Xmx512m
256m表示JVM堆内存最小值
512m表示JVM堆内存最大
--------------------------------------
另外需要考虑的是Java提供的垃圾回收机制。虚拟机的堆大小决定了虚拟机花费在收集垃圾上的时间和频度。收集垃圾可以接受的速度与应用有关,应该通过分析实际的垃圾收集的时间和频率来调整。如果堆的大小很大,那么完全垃圾收集就会很慢,但是频度会降低。如果你把堆的大小和内存的需要一致,完全收集就很快,但是会更加频繁。调整堆大小的的目的是最小化垃圾收集的时间,以在特定的时间内最大化处理客户的请求。在基准测试的时候,为保证最好的性能,要把堆的大小设大,保证垃圾收集不在整个基准测试的过程中出现。
如果系统花费很多的时间收集垃圾,请减小堆大小。一次完全的垃圾收集应该不超过 3-5 秒。如果垃圾收集成为瓶颈,那么需要指定代的大小,检查垃圾收集的详细输出,研究垃圾收集参数对性能的影响。一般说来,你应该使用物理内存的 80% 作为堆大小。当增加处理器时,记得增加内存,因为分配可以并行进行,而垃圾收集不是并行的。
分享到:
相关推荐
其默认空间是物理内存的 1/64,最大空间是物理内存的 1/4。当内存剩余不到 40 %时,JVM 会增大堆到 Xmx 设置的值,当内存剩余超过 70 %时,JVM 会减小堆到 Xms 设置的值。 垃圾回收 GC 的角色是在 JVM 中调用垃圾...
- **JVM默认堆内存配置**:JVM默认情况下,最小堆内存为物理内存的1/64,最大堆内存为物理内存的1/4。对于8GB物理内存的机器,这意味着默认的最小堆内存为128MB,最大堆内存为2048MB。 2. **`java.lang....
元空间大小默认与物理内存关联,理论上不会溢出,但如果加载了大量的类,尤其是大量的动态生成的类,也可能导致元空间耗尽。 元空间泄漏的一种常见情况是过度使用动态代理或者反射。例如,不断地生成新的代理类或者...
默认情况下,当类不再被引用时,JVM会自动进行类卸载。开启此选项后,可以避免因频繁的类加载和卸载导致的性能损耗。 7. **-Xss**:设置每个线程的栈大小。例如,`-Xss256k` 表示每个线程的栈大小为256KB。适当减小...
1. **堆内存设置参数**:包括Xmx(堆最大可用内存,默认是本地机器物理内存的1/4)、Xms(堆初始内存,默认是本地机器物理内存的1/64)。 2. **新生代(Young)设置**:Xmn(堆Young代大小,增大新生代会减少老年代...
3. **默认配置限制:** JVM默认分配给PermGen space的空间较小,容易达到上限。 **解决方案:** 1. **增大PermGen space大小:** - 在Linux环境中,可以通过修改`$CATALINA_HOME/bin/catalina.sh`文件中的`JAVA_...
3. **JVM内存设置不当**:默认的JVM内存设置可能不足以应对大规模索引任务,例如堆内存大小(-Xms, -Xmx)设置过小。 4. **内存泄漏**:程序中的某些对象未被正确释放,导致内存持续占用。 为了解决JVM运行时内存...
- 若要增加最大可用内存,请在 `[JVMOptions]` 部分添加 `-Xmx<size>m` 或 `-Xmx<size>g`,其中 `<size>` 表示内存大小,单位可以是兆字节 (m) 或千兆字节 (g)。 - 例如,要将最大内存设置为 2GB,则应添加 `-Xmx...
准备阶段为类变量分配内存并设置默认初始值;解析阶段将符号引用转化为直接引用;初始化阶段负责执行类构造器`<clinit>`方法。 #### 2. 字节码执行引擎 JVM的核心组件之一就是字节码解释器,它负责执行字节码指令。...
至于“加大JVM内存”,在处理大型应用或高并发场景时,可能需要增加Java虚拟机(JVM)的内存分配,以避免OutOfMemoryError。调整JVM内存参数一般在启动命令行中进行,常见的内存选项有: - `-Xms`:初始堆大小,...
过大则会占用过多内存,增加内存压力。 此外,还要关注垃圾收集器的选择和配置。例如,年轻代可以选择Serial、Parallel或ParNew收集器,老年代可以选择Serial Old、Parallel Old或CMS收集器。G1收集器是现代JVM的...
Java虚拟机(JVM)性能调优是Java开发者必须掌握的关键技能之一,特别是涉及到内存管理和垃圾回收(GC)策略时。以下将详细讲解Java中内存分配、引用类型以及垃圾回收的基本算法。 首先,Java中参数传递是按值传递...
当堆内存中的空余空间低于40%时,JVM会自动增加堆内存直到达到`-Xmx`所设定的最大值;而当空余空间超过70%时,JVM则会减少堆内存至`-Xms`所设定的最小值。为了避免每次垃圾回收之后调整堆内存大小带来的性能损耗,...
- `-Xms` 和 `-Xmx`: 分别用于设定JVM的初始堆内存和最大堆内存。例如,`-Xms256m -Xmx1024m`表示初始分配256MB,最大不超过1024MB。如果程序需要处理大量数据,应适当增加这些值,防止因内存不足导致的系统崩溃。 ...
这是JVM的默认配置,主要适用于轻量级应用或低CPU核心数的环境。在这个案例中,设置了`-Xms2048M -Xmx2048M`以确保堆内存始终为2GB,`-Xmn512M`分配给年轻代,`-XX:PermSize=256M -XX:MaxPermSize=256M`设定永久代...
默认情况下,JVM会从小到大动态地调整堆空间,但设置`-Xms`可以确保程序启动时就分配足够的内存,避免频繁的内存扩展操作,从而提高性能。例如,`-Xms256m`表示设置初始堆内存为256MB。 2. `-Xmx`: 这个参数用来...
这些参数可以调整JVM的行为,优化内存分配、垃圾收集、线程设置等。以下是一些常见的JVM启动参数及其详细解释: 1. **-Xms和-Xmx**: 这两个参数用于设置Java堆内存的最小和最大值。例如,`-Xms256m -Xmx1024m`表示...
以下是对JVM部分关键配置参数的详细解析,这些参数能够帮助我们优化应用程序的执行效率,管理内存,以及进行性能调优。 #### 执行模式配置 1. **-Xmixed**: 混合模式执行(默认)。此参数指示JVM使用混合模式执行...
- 启动时预访问并置零所有分配的内存页面,虽然可能会导致启动时间略微增加,但在运行时可以减少因页面首次访问引起的延迟。这对于需要频繁访问内存的关键业务系统来说是非常有利的。 3. **-XX:UseBiasedLocking**...