记录几个在jvm中频繁用到的参数设置
2017-01-09 16:33
113 查看
堆(Heap)和非堆(Non-heap)内存 按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。
1、-Xms 初始堆内存大小,当剩余内存大小不足40%时,增大到Xmx设置的大小,一般在生产环境与-Xmx设置一样大小,避免频繁的增大减小
2、-Xmx 最大堆内存大小,当剩余内存超过70%时,减小到Xms设置的大小
3、-Xss 每个线程的栈内存大小,JDK5.0以后默认都是1M,,可以根据自己线程栈的深度来设置。如果应用较小,可以设置128k等等。减小这个值理论上可以增大线程个数,但是操作系统会限制线程的最大数,一般是3000-5000个
4、-XX:MaxPermSize 持久代最大值,非堆内存,不参与gc
常见内存溢出异常:
1、 java.lang.OutOfMemoryError:Java heap space
java堆内存不够,有可能是出现死循环或确实堆内存太小,可以通过调整-Xms和-Xmx解决
2、java.lang.OutOfMemoryError:PermGen space
持久代内存不够,持久代一般保存class和meta信息,如果加载太多的class,或者引入太多第三方jar,会导致PermGen space,这种错误常见在web服务器对jsp进行预编译时发生。可通过调整-XX:PermSize,-XX:MaxPermSize来解决
3、 java.lang.StackOverflowError
线程栈溢出,原因是方法调用层次过多(比如无线递归)或者栈太小,如果是栈太小,可以通过-Xss来调整栈大小解决。
1、-Xms 初始堆内存大小,当剩余内存大小不足40%时,增大到Xmx设置的大小,一般在生产环境与-Xmx设置一样大小,避免频繁的增大减小
2、-Xmx 最大堆内存大小,当剩余内存超过70%时,减小到Xms设置的大小
3、-Xss 每个线程的栈内存大小,JDK5.0以后默认都是1M,,可以根据自己线程栈的深度来设置。如果应用较小,可以设置128k等等。减小这个值理论上可以增大线程个数,但是操作系统会限制线程的最大数,一般是3000-5000个
4、-XX:MaxPermSize 持久代最大值,非堆内存,不参与gc
常见内存溢出异常:
1、 java.lang.OutOfMemoryError:Java heap space
java堆内存不够,有可能是出现死循环或确实堆内存太小,可以通过调整-Xms和-Xmx解决
2、java.lang.OutOfMemoryError:PermGen space
持久代内存不够,持久代一般保存class和meta信息,如果加载太多的class,或者引入太多第三方jar,会导致PermGen space,这种错误常见在web服务器对jsp进行预编译时发生。可通过调整-XX:PermSize,-XX:MaxPermSize来解决
3、 java.lang.StackOverflowError
线程栈溢出,原因是方法调用层次过多(比如无线递归)或者栈太小,如果是栈太小,可以通过-Xss来调整栈大小解决。
相关文章推荐
- 记录几个在jvm中频繁用到的参数设置
- weblogic设置JVM的几个参数说明
- weblogic设置JVM的几个参数说明
- weblogic设置JVM的几个参数说明
- 使用 SQL Server 时需要经常用到的几个设置选项
- freebsd下必须要设置的几个的参数
- 【转】jvm内存参数设置
- jvm参数设置
- 浅谈设置JVM内存分配的几个妙招
- linux 下视频设备设置的几个参数 v4l video4linux v4l2 ioctl
- jvm内存参数设置
- 五种常用web服务器jvm参数设置
- freebsd下必须要设置的几个的参数
- php.ini中几个参数的设置
- [导入]php.ini中几个参数的设置
- [导入]使用 SQL Server 时需要经常用到的几个设置选项!
- java web start使用jvm参数,设置内存使用
- 在Netbeans中设置JVM参数
- JVM参数设置详解
- linux 下视频设备设置的几个参数 v4l video4linux v4l2 ioctl