JVM参数说明(转)

做了这么多年java,自以为算是熟悉,其实还差得远,啥也别说了,还是踏踏实实地学吧。今天总结一下常用的JVM的启动参数。


参数类别


参数项


说明


标准参数(-,所有的JVM实现都必须实现这些参数的功能,而且向后兼容)


-client


以client模式启动jvm,这种方式启动速度快,但运行时性能和内存管理效率不高,适合客户端程序或者开发调试。


-server


以server模式启动jvm,与client情况恰好相反。适合生产环境。64位的jvm自动以server模式启动。


-classpath

-cp


告诉jvm类搜索路径。如果指定了-classpath,则jvm就忽略CLASSPATH中指定的路径。各路径之间以分号隔开。如果-classpath和CLASSPATH都没有指定,则jvm从当前路径寻找class。

Jvm搜索class的方式和顺序为:Bootstrap(jvm自带的)->Extension(JRE_HOME/lib/ext中的)->User(应用程序自己的)。如下语句会输出上述三种方式的路径信息:

System.getProperty("sun.boot.class.path");

System.getProperty("java.ext.dirs");

System.getProperty("java.class.path");


-Dproperty=value


设置系统属性名/值对。如果value中有空格,则需要使用双引号。


-jar


指定以jar包的形式启动应用程序


-javaagent:<jarpath>[=<options>]


指定jvm启动时装入java语言设备代理。关于设备代理是jdk1.5新推出的概念。进一步的信息可以参考java.lang.instrument.Instrumentation接口


-verbose[:class|gc|jni]


分别输出:

Jvm载入类的信息。诊断ClassNotFound错误时有用

Jvm每次gc的信息。

Native方法调用的情况,用于诊断jni调用。


非标准参数(-X ,默认JVM实现此功能,但是不保证所有JVM都实行,而且不保证向后兼容)


-Xbootclasspath:bootclasspath


让jvm从指定的路径中加载bootclass,用来替换jdk的rt.jar。一般不会用到。


-Xbootclasspath/a:path


被指定的文件追加到默认的bootstrap路径中。


-Xbootclasspath/p:path


让jvm优先于默认的bootstrap去加载path中指定的class


-Xincgc


开启增量gc,一般也不会用到。


-Xloggc:file


输出gc日志,在没有专业的监控工具时,这个显得很有用。


-Xmsn


指定jvm堆的初始大小。默认是物理内存的1/64


-Xmxn


指定jvm堆的最大值。默认是物理内存的1/4


-Xprof


跟踪正在运行的程序,并将跟踪数据输出到标准输出,适合开发调试。


-Xssn


设置单个线程栈的大小。


非稳定参数(-XX,此类参数各个JVM的实现会有不同,而且随时可能消失)


-XX:+ScavengeBeforeFullGC


新生代GC优先于Full GC执行


-XX:+UseGCOverheadLimit


在抛出OOM之前,jvm消耗在gc上的时间比例。


-XX:-UseConcMarkSweepGC


采用并发标记交换算法进行GC。并发是指过个线程同时gc,适合多核处理器的情况,并发一定满足并行,反之不成立。


-XX:-UseParallelGC


启用并行GC。并行是指有独立的线程进行gc,gc时不会打断应用线程。


-XX:-UseSerialGC


启用串行GC。新版本jdk不会这么干了。


-XX:MaxNewSize=size


Java堆中新生成对象占用堆的大小


-XX:MaxPermSize=size


Java堆中年老代占用堆的最大值


-XX:HeadDumpPath=./java_pid<pid>.hprof


指定导出堆信息时的路径或者文件名。


-XX:-HeadDumpOnOutOfMemoryError


当首次出现OOM时导出此时堆中相关信息。


-XX:-PrintGC


每次GC时打印相关信息


-XX:-PrintGC Details


每次GC时打印详细信息


-XX:-PrintGCTimeStamps


打印GC的时间戳


-XX:-TranceClassLoading


跟踪类的加载信息


-XX:-TraceClassLoadingPreorder


跟踪被引用到的所有类的加载信息


-XX:-TranceClassResolution


跟踪常量池


-XX:-TraceClassUnloading


跟踪类的卸载信息

http://www.cnblogs.com/wenfeng762/archive/2011/08/14/2137810.html

时间: 2024-10-06 12:55:21

JVM参数说明(转)的相关文章

jvm 参数说明

1.远程调试相关: java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=6789 参数说明: transport:debugee与debuger调试时之间的通讯数据传输方式.server:是否监听debuger的调试请求.suspend:是否等待启动,也即设置是否在debuger调试链接建立后才启动debugee JVM.address:debugee的地址,用于debuger建立调试链接. 本地的为debugge

JVM参数说明

堆=年轻代(new)+年老代(old) 年轻代 = Eden 和 Survivor*2 -Xmx2048m 最大堆大小 -Xms2048m 初始堆大小 -Xmn1024m 年轻代大小 -Xss1m 每个线程的堆栈大小 -XX:PermSize=256m 初始持久代大小 -XX:MaxPermSize=256m 最大持久代大小 -XX:+UseParNewGC 设置年轻代为并行收集 -XX:+UseConcMarkSweepGC 设置年老代为并发收集 -XX:+CMSParallelRemarkE

Java 进阶 (三) JVM参数说明

1.JVM(Java Virtual Machine) 1.-Xms    初始堆大小 2.-Xmx    最大堆大小 3.-Xmn    青年代大小 4.-Xss    每个线程的堆栈大小 5.-XX:+UseParNewGC    青年代垃圾收集方式为并行收集 6.-XX:+UseParallelOldGC   老年代垃圾收集方式为并行收集 7.-XX:ParallelGCThreads    并行收集器的线程数(最好与处理器数目相等) 8.-XX:MaxGCPauseMillis    每

转:Tomcat 内存溢出 &quot;OutOfMemoryError&quot; 问题总结 (JVM参数说明)

问题说明:公司内网环境中部署的jenkins代码发版平台突然不能访问了,查看tomcat的catalina.out日志发现报错如下: ? 1 2 3 4 5 6 [[email protected] logs]# tail -f /srv/apache-tomcat-7.0.67/logs/catalina.out ...... Exception in thread "http-bio-8080-exec-5" java.lang.OutOfMemoryError: PermGen

JVM参数与实际环境中的优化配置实践

如何配置我们的JVM呢,首先我们需要知道JVM的参数有哪些,然后根据这些参数的意义去分析自己的程序的JVM需要的配置.可以事先做一些尝试,再逐步调优,这个调优也是一个过程,没有足够的经验而做到一步到位是一件很困难的事情.事情是一点点做的,不能因为着急就胡乱地配置,踏踏实实戒骄戒躁. JVM在Java体系中的地位 JVM是Java底层核心要素,可以说Java生态的东西都是运行在JVM里面的.From:https://docs.oracle.com/javase/8/docs/ JVM参数的含义 

Java中jvm设置

最近遇到java程序启动后,报错如下: Exception in thread "catalina-exec-1190" java.lang.OutOfMemoryError: PermGen space Exception in thread "catalina-exec-1198" java.lang.OutOfMemoryError: PermGen space Exception in thread "catalina-exec-102"

tomcat jvm 内存调优 适用于 JDK 6 &amp; 7

参考:https://blog.csdn.net/m0_37327416/article/details/76185051 1.jvm内存管理机制: 1)堆(Heap)和非堆(Non-heap)内存 按照官方的说法:"Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配.堆是在 Java 虚拟机启动时创建的.""在JVM中堆之外的内存称为非堆内存(Non-heap memory)". 可以看出JVM主要管理两种类型的内存:堆和非堆.简单

jvm 图形化工具之jconsole

原先我们学习了jvm的命令行工具,现在我们来学习命令行的可视化工具jconsole: 为了测试我们启动原先的springboot项目 jconsole工具 jconsole(Java Monitoring and Management Console)是一种基于 JMX 的可视化监视.管理工具,它管理部分的功能是针对 JMXMBean 进行管理,由于 MBean 可以使用代码.中间件服务器的管理控制台或者所有符合 JMX 规范的软件进行访问 jconsole集成了线程与内存的可视化展示 . 1.

【Spark深入学习 -14】Spark应用经验与程序调优

----本节内容------- 1.遗留问题解答 2.Spark调优初体验 2.1 利用WebUI分析程序瓶颈 2.2 设置合适的资源 2.3 调整任务的并发度 2.4 修改存储格式 3.Spark调优经验 3.1 Spark原理及调优工具 3.2 运行环境优化 3.2.1 防止不必要的分发 3.2.2 提高数据本地性 3.2.3 存储格式选择 3.2.4 选择高配机器 3.3 优化操作符 3.3.1 过滤操作导致多小任务 3.3.2 降低单条记录开销 3.3.3 处理数据倾斜或者任务倾斜 3.