jvm常用参数设置 good
1、堆的大小可以通过 -Xms 和 -Xmx 来设置,一般将他们设置为相同的大小,目的是避免在每次垃圾回收后重新调整堆的大小,比如 -Xms=2g -Xmx=2g 或者 -Xms=512m -Xmx=512m
2、年轻代大小可以通过 -Xmn 来设置,比如-Xmn=2g 或者 -Xmn512m,此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8
3、年老代大小 = 堆大小 – 年轻代大小
4、持久代或者永久代大小可以通过 -XX:PermSize 和 -XX:MaxPermSize 来控制
5、-XX:SurvivorRatio 控制 Eden和Survivor的内存占用比例,默认为8;
如果设置了NewRatio,那么整个堆空间的1/(NewRatio +1)就是新生代空间的大小,-XX:NewRatio推荐2到4.
如果同时指定了NewRatio和NewSize,你应该使用更大的那个。于是,当堆空间被创建时,你可以用过下面的表达式计算初始新生代空间的大小:
min(MaxNewSize, max(NewSize, heap/(NewRatio+1))) |
三、JVM内存溢出配置
如何能在JVM遇到OOM错误的时候能够打印heap dump?可以设置-XX:+HeapDumpOnOutOfMemoryError参数,让JVM在探测到内存OOM的时候打印dump。但是在JVM启动参数添加这个参数的时候,JVM启动失败:Unrecognized VM option '+HeapDumpOnOutOfMemeryError' ,问题的原因是因为没有添加-XX:HeapDumpPath参数配置。-XX:HeapDumpPath这个参数可以设置dump文件的存放位置。将JVM启动参数设置成如下格式:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=C:/
问题得到解决。当JVM发生内存溢出的时候,会在C:/下打印出heap dump
常用参数设置
UseParNewGC表示对新生代采用并行gc;
ParallelGCThreads表示并行的线程数为8,一般是cpu的核个数,当核个数大于8时可能不是很适用;
UseConcMarkSweepGC表示对full gc采用CMS gc;
-XX:+DisableExplicitGC 表示禁止显式gc,System.gc()
-XX:+UseCMSCompactAtFullCollection 适用于CMS gc,表示在进行gc的同时清理内存碎片,但会加长gc的总时间
-XX:CMSInitiatingOccupancyFraction=80 适用于CMS gc,表示在年老代达到80%使用率时马上进行回收
在JVM Crash时获heap信息的一些配置参数:
-XX:ErrorFile=./xxx.log JVM Crash时记录heap信息
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=./yyy.log JVM OOM时记录heap信息
http://www.cnblogs.com/moonandstar08/p/4924602.html
Trace跟踪参数
-verbose:gc
-XX:+printGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:log/gc.log // 指定GC log的位置,以文件输出
-XX:PrintHeapAtGC // 每一次GC后,都打印堆信息
// 类加载信息
-XX:TraceClassLoading
-XX:+PrintClassHistogram
-Ctrl +Break 打印类信息, 类的使用情况

http://www.cnblogs.com/wind90/p/5457235.html
public static void main(String[] args) throws ClassNotFoundException {
ClassLoader loader = HelloWorld.class.getClassLoader();
System.out.println(loader);
//使用ClassLoader.loadClass()来加载类,不会执行初始化块
loader.loadClass("Test2");
//使用Class.forName()来加载类,默认会执行初始化块
// Class.forName("Test2");
//使用Class.forName()来加载类,并指定ClassLoader,初始化时不执行静态块
// Class.forName("Test2", false, loader);
}
}
static {
System.out.println("静态初始化块执行了!");
}
}
http://lavasoft.blog.51cto.com/62575/184547/
java一般使用两个path:classpath 和 java.library.path
classpath是指向jar包的位置
java.library.path是非java类包的位置如(dll,so)
解决办法:
1:LINUX下的系统变量LD_LIBRARY_PATH来添加java.library.path
2:在vm arguments里添加-Djava.library.path= /usr/local/lib
3:见下图

开发、应用中老是会遇到OutOfMemory异常,而且常常是过一段时间内存才被吃光,这里可以利用java heap dump出jvm内存镜像,然后再对其进行分析来查找问题。
http://www.cnblogs.com/linhaohong/archive/2012/07/12/2588660.html
如果嫌配置-classpath麻烦,可以用-Djava.ext.dir 参数替代,这样就可以批量引入jar包.
但是有个问题需要注意,java默认用的ext目录是$JAVA_HOME/jre/lib/ext,所以如果你指定了-Djava.ext.dir 参数,则原$JAVA_HOME/jre/lib/ext下的jar包将不会被引用,可能会导致你的程序出现问题;
例如有用到SSL协议的地方会出现javax.net.ssl.SSLKeyException: RSA premaster secret error 异常.
最近我在项目中通过jdbc连接sqlserver2008时出现过这样的问题,就是因为用-Djava.ext.dir 参数替代了-classpath.
解决方法是将$JAVA_HOME/jre/lib/ext下的dnsns.jar,localedata.jar,sunjce_provider.jar,sunpkcs11.jar放置到你指定的java.ext.dir目录下.
为了防止出现莫名其妙的错误,最好整个$JAVA_HOME/jre/lib/ext下的jar包都copy过去.
参考:
http://jony-hwong.iteye.com/blog/315324
http://t8500071.iteye.com/blog/790676
jvm常用参数设置 good的更多相关文章
- jvm常用参数设置 专题
在jdk8中 -Xms2g不合法,能通过的:-Xms2G #!/bin/bash JAVA_OPTS="-Xms4G -Xmx4G -XX:+HeapDumpOnOutOfMemoryErr ...
- JVM常用参数设置
堆内存设置 示例: java -Xmx4550m -Xms4550m -Xss128k -XX:NewRatio=5 -XX:SurvivorRatio=5 -Xmx4550m:设置JVM最大可用内存 ...
- HotSpot JVM常用参数设置
转自:https://www.zybuluo.com/jewes/note/57352 选项的分类 Hotspot JVM提供以下三大类选项: 1. 标准选项:这类选项的功能是很稳定的,在后续版本中也 ...
- 【JVM】6、聊聊JVM常用参数设置
整体考虑堆大小 -Xms3550m, 初始化堆大小.通常情况和-Xmx大小设置一样,避免虚拟机频繁自动计算后调整堆大小. -Xmx3550m,最大堆大小. 考虑分代设置堆大小 首先通过jstat等工具 ...
- 深入理解JVM虚拟机10:JVM常用参数以及调优实践
转自http://www.rowkey.me/blog/2016/11/02/java-profile/?hmsr=toutiao.io&utm_medium=toutiao.io&u ...
- 深入理解java虚拟机笔记补充-JVM常见参数设置
JVM 常见参数设置 内存设置 参数 -Xms:初始堆大小,JVM 启动的时候,给定堆空间大小. -Xmx:最大堆大小,如果初始堆空间不足的时候,最大可以扩展到多少. -Xmn:设置年轻代大小.整个堆 ...
- 了解java虚拟机—JVM相关参数设置(2)
1. JVM相关参数设置 JVM相关配置 -XX:+PrintGC 两次次YoungGC,两次FullGC. -XX:+PrintGCDetails 打印GC时的内存,并且在程序结束时打印堆内存使 ...
- HotSpot JVM常用参数(选项)设置
本文讨论的选项是针对HotSpot虚拟机的. 1.选项分类及语法 HotspotJVM提供以下三大类选项: 1.1.标准选项 这类选项的功能是很稳定的,在后续版本中也不太会发生变化. 运行java或者 ...
- JVM笔记-GC常用参数设置
GC常用参数 -Xmn -Xms -Xmx -Xss 年轻代 最小堆 最大堆 栈空间, -Xms -Xmx 一般设置成一样大小, -XX:+UseTLAB 使用TLAB,默认打开 -XX:+Print ...
随机推荐
- java--String方法
String : 字符串类型 一.构造函数 String(byte[ ] bytes):通过byte数组构造字符串对象. String(char[ ] value):通过char数组构造字符串对象. ...
- 【转】opencv-在图像上显示字符(不包括中文)
原文参见:http://blog.csdn.net/ycc892009/article/details/6516528 1 #include <cv.h> #include <hig ...
- docker 学习笔记20:docker守护进程的配置与启动
安装好docker后,需要启动docker守护进程.有多种启动方式. 一.服务的方式 因为docker守护进程被安装成服务.所以,可以通过服务的方式启停docker守护进程,包括查看状态. sudo ...
- linux下find命令-atime,-ctime,-mtime真正含义
linux下的-atime,-ctime,-mtime含义我们经常会在论坛或者群里面被问到,在linux或者unix下如何查看某文件的创建日期?经常又会有人说用find命令加选项-ctime,其实这里 ...
- 区间重合判断(pojg校门外的树)
pojg:http://poj.grids.cn/practice/2808 解法1:以空间换时间: #include<stdio.h> #include<string.h> ...
- 设计模式 ( 二十 ) 访问者模式Visitor(对象行为型)
设计模式 ( 二十 ) 访问者模式Visitor(对象行为型) 1.概述 在软件开发过程中,对于系统中的某些对象,它们存储在同一个集合collection中,且具有不同的类型,而且对于该集合中的对象, ...
- 年度酷工作---高级数据工程师(公司靠谱,技术强悍,产品牛叉,福利有干货) 关键词:7000万用户、五星级厨师、住房补助 - V2EX
年度酷工作---高级数据工程师(公司靠谱,技术强悍,产品牛叉,福利有干货) 关键词:7000万用户.五星级厨师.住房补助 - V2EX 年度酷工作---高级数据工程师(公司靠谱,技术强悍,产品牛叉,福 ...
- 联想K82------智能电视行业的野蛮入侵者
智能电视行业近年来“渐入佳境”,一方面得力于智能手机.平板电脑的普及让数码产品的智能化趋势深入人心,智能电视自然成了IT行业的下一个增长点:另一方面则得力于部分企业敢于第一个吃螃蟹,通过他们的创新和开 ...
- 鹅厂揭秘——高端大气的App电量測试
怎样评价我们开发出来的应用是耗电还是不耗电,怎样測试?这就是我们今天讨论的主题--电量測试,一个在移动应用中新出现的測试类型. 作者简单介绍 watermark/2/text/aHR0cDovL2Js ...
- Qt 状态机框架学习(没学会)
Qt状态机框架是基于状态图XML(SCXML) 实现的.从Qt4.6开始,它已经是QtCore模块的一部分.尽管它本身是蛮复杂的一套东西,但经过和Qt的事件系统(event system).信号槽(s ...