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 ...
随机推荐
- 在Struts 2中实现IoC
IoC(Inversion of Control,以下译为控制反转)随着Java社区中轻量级容器(Lightweight Contianer)的推广而越来越为大家耳熟能详.在此,我不想再多费唇舌来解释 ...
- Python函数式编程:Lambda表达式
首先我们要明白在编程语言中,表达式和语句的区别. 表达式是一个由变量.常量.有返回值的函数加运算符组成的一个式子,该式子是有返回值的 ,如 a + 1 就是个表达式, 单独的一个常量.变量 或函数调 ...
- Column store index 列数据如何匹配成行数据?
SQL Server 2012引入了列存储索引,对每列的数据进行分组和存储,然后联接所有列以完成整个索引.这不同于传统索引,传统索引对每行的数据进行分组和存储,然后联接所有行以完成整个索引. 在访问基 ...
- 网页制作之JavaScript部分3--事件及事件传输方式(函数调用 练习题 )重要---持续更新中
一. 事件:说白了就是调用函数的一种方式.它包括:事件源.事件数据.事件处理程序. JS事件 1.js事件通常和函数结合来使用,这样可以通过发生的事件来驱动函数的执行,从而引起html出现不同的效果. ...
- Arduino 入门程序示例之一排 LED(2015-06-11)
概述 最简单的一个 LED 的实验之后,自然是增加几个 LED,咱排成一排来玩吧.最后,再把一排的 LED 排成一个 8 字来玩——七段数码管. 示例程序 流水灯 第一个出场的肯定是经典的流水灯,也叫 ...
- 13 - NSURLConnection
一.互联网 基本概念: HTTP协议 统一标准获取网络资源(其他设备上的东西) 本机 -> 远程服务器(计算机) URL(http有格式的字符串) 本机 <- 远程服务器(计算机) Fil ...
- QTableWidget 导出到csv表格
跳槽到了新的公司,开始苦逼的出差现场开发,接触到了新的应用.有很多应用需要将Table导出成表格,可以把table导出成csv格式的文件.跟大伙分享一下: lass TableToExcle : pu ...
- U盘安装centos 7 提示 “Warning: /dev/root does not exist, could not boot” 解决办法
1.查询磁盘 cd /dev ls 2.查询结果 sda 是我的硬盘对应的文件名(我机子只有一块硬盘),所以sda4就是U盘对应的文件名了,可以看到是sda4.至此我们重启一下,回到第一个图片所示的界 ...
- JPA相关知识点滴--持续更新中.....
Java 持久化(JPA) •Java EE 5 在EJB 3.0 中包含JPA 1.0 •参考实现:TopLink Essentials •Java EE 6 包含JPA 2.0 •参考实现:Ec ...
- hdu 4861 Couple doubi(数论)
题目链接:hdu 4861 Couple doubi 题目大意:两个人进行游戏,桌上有k个球,第i个球的值为1i+2i+⋯+(p−1)i%p,两个人轮流取,假设DouBiNan的值大的话就输出YES, ...