这两天跑demo,demo总是因为out of memeory而停掉。之前也知道设置参数这回事,一直在工作中没有遇到过,顶多是eclipse启动的时候按照网上现成的模板弄一下,没有系统的了解一下,今天正好借这个机会了解一下。
java jvm的heap分3段:
--------------------------------
PermGen space ------------------------> 存储class文件等需要永久存储的
-------------------------------- -Xmx| -Xms
Older --------------------------> 存储。 jvm gc 一个线程专门负责扫描Older区进行gc
-------------------------------- -Xmn
Young ---------------------------> 新new的对象, jvm gc有一个线程在Heap不足时,遍历Heap,将Young 区升级为Older区
-------------------------------- heap begin
ms和mx在生产环境一般将这两个值设置成相同的值,为了减少系统在运行期间分配内存所花费的时间。
经验值mn一般为mx的1/3.
4种GC
1、第一种为单线程GC,也是默认的GC,该GC适用于单CPU机器。
2、第二种为Throughput GC,是多线程的GC,适用于多CPU,使用大量线程的程序。第二种GC与第一种GC相似,不同在于GC在收集Young区是多线程的,但在Old区和第一种一样,仍然采用单线程。-XX:+UseParallelGC参数启动该GC。
3、第三种为Concurrent Low Pause GC,类似于第一种,适用于多CPU,并要求缩短因GC造成程序停滞的时间。这种GC可以在Old区的回收同时,运行应用程序。-XX:+UseConcMarkSweepGC参数启动该GC。
4、第四种为Incremental Low Pause GC,适用于要求缩短因GC造成程序停滞的时间。这种GC可以在Young区回收的同时,回收一部分Old区对象。-Xincgc参数启动该GC。
PS: 设置参数的默认单位是k,如果使用m或者g,要指明。
java -Xms15g -Xms15g -Xmn5g xxx
参考资料:http://developer.51cto.com/art/200906/127144.htm
相关推荐
java内存机制与启动参数优化 Java 内存机制是指 Java 虚拟机(JVM)管理内存的机制。JVM 主要管理两种类型的内存:堆(Heap)和非堆(Perm)。堆是 Java 代码使用的内存,留给开发人员使用的;非堆是 JVM 留给自己...
### Tomcat 6.0 修改启动内存设置及 Java JVM 参数配置详解 #### 一、背景与目的 在部署和运行 Java Web 应用时,合理地配置应用服务器(如 Apache Tomcat)的内存是非常重要的。这不仅可以提升应用程序的性能,还...
Java启动参数是调整Java虚拟机(JVM)行为的关键工具,它们可以影响应用程序的性能、内存使用、诊断和调试。本篇文章将详细讲解Java启动参数中的标准参数,这些参数是所有JVM实现必须支持并保证向后兼容的。 首先,...
### JAVA启动参数详解 #### 一、概述 Java 虚拟机 (JVM) 的启动参数对于调整和优化 Java 应用程序的性能至关重要。根据不同的应用场景和需求,合理选择和配置这些参数能够显著提升应用程序的运行效率。Java 启动...
Java内存参数调优是优化Java应用程序性能的关键环节,特别是对于大型和高负载的应用,合理的内存配置可以有效地降低垃圾收集(Garbage Collection, GC)带来的压力,提高应用的响应速度和系统吞吐量。以下是一些关于...
这里的`-Xmx3000m`参数设置的是JVM的最大堆内存为3GB,可以根据实际需求调整。确保分配足够的内存,因为分析大堆文件时可能需要较大的资源。 当HeapAnalyzer启动后,你需要导入一个heap dump文件。heap dump是在...
Java启动参数大全是Java开发者必须掌握的关键知识,它直接影响到Java应用程序的性能、稳定性和资源利用率。在解决像`OutOfMemoryError`这样的问题时,正确配置启动参数至关重要。Java启动参数主要分为三类:标准参数...
Java启动脚本生成工具是一款非常实用的开发辅助软件,它能帮助Java开发者快速生成适用于Windows和Linux操作系统的启动脚本,极大地提高了工作效率,避免了手动编写脚本的繁琐过程。这款工具的核心功能在于自动化处理...
1. **编码设置**:除了调整内存参数外,还可以通过在批处理文件或注册表中添加`-Dfile.encoding=UTF-8`来指定文件编码为UTF-8,从而避免字符集不匹配导致的问题。 2. **重启服务**:在对启动参数进行修改后,记得...
1. **调整JVM启动参数**:增加-Xms(初始堆大小)和-Xmx(最大堆大小)参数,确保有足够的内存供程序使用。 2. **检查错误日志**:查看日志文件中是否有其他异常信息,有助于定位潜在的问题根源。 3. **代码审查**:...
例如,使用`PreMain-Class`参数启动Java应用,加载带有`Premain-Class`的代理类。 2. **第三方工具**: 工具如`VisualVM`和`JProfiler`提供图形界面,可以直接查看对象的内存占用情况,包括对象的总大小、实例字段...
- **调优策略**:为了提高程序的性能和响应速度,开发人员可以通过调整JVM参数来优化Java堆内存的大小,如`-Xmx`(最大堆内存大小)和`-Xms`(初始堆内存大小)等。 #### 三、本机内存及其作用 除了Java堆内存之外...
- **优化内存配置**:基于分析结果,调整JVM的内存参数,如`Xms`, `Xmx`, `XX:MaxPermSize`等。 5. **最佳实践** - 定期进行内存分析,尤其是在高负载或长时间运行的系统中。 - 在生产环境中,使用jProfiler7的...
堆内存是全局的,所有线程共享,它的大小在JVM启动时可以指定。栈内存则是每个线程独享的,其大小由JVM决定,通常较小但处理速度较快。 **堆内存分析** 1. **对象分配**:当创建一个对象时,它的实例数据会存储在...
在启动Java应用程序时,可以通过命令行参数来设置JVM的初始堆内存和最大堆内存。常用的参数有: - `-Xms<size>`:设置初始堆内存大小。例如,`-Xms256M`表示初始堆内存为256MB。 - `-Xmx<size>`:设置最大堆内存...
内存参数主要用来控制Java虚拟机(JVM)的内存分配,包括永久代(PermGen)大小、最小堆内存(-Xms)和最大堆内存(-Xmx)等。这些参数对避免内存溢出问题至关重要。 ##### 2.2 设置方法 **Windows环境:** - 在Tomcat安装...
理论上元空间没有固定的内存限制,可以通过JVM启动参数设置最大值,从而防止内存溢出错误。但如果不加限制地增长,可能会导致操作系统不得不使用虚拟内存,进而引起性能问题。 JIT代码缓存(JIT Code Cache)是一个...