虚拟机参数讲解

堆分配参数

-XX:+PrintGC 使用这个参数,虚拟机启动后,只要遇到GC就会打印日志
-XX:+UseSerialGC 配置串行回收器
-XX:+PrintGCDetails 可以查看详细信息,包括各个区的情况
-Xms:设置java程序启动时初始堆大小
-Xmx:设置java程序能获得的最大堆大小
-Xmx20m -Xms5m -XX:+PrintCommandLineFlags:可以将隐式或者显示传给虚拟机的参数输出
总结:在实际工作中,我们可以直接将初始堆大小与最大堆大小设置相等,这样的好处是可以减少程序运行时的垃圾回收次数,从而提高性能
-XX 对于系统级别的(jvm)配置 配置日志信息 或者使用什么样的垃圾回收器
-XX (非) 基本上都是对 应用层面 上的配置
+ 代表启用

新生代配置

-Xmn:可以设置新生代的大小,设置一个比较大的新生代会减少老年代的大小,这个参数对系统的性能以及GC行为有很大的影响,新生代大小一般会设置整个堆空间的1/3到1/4左右
-XX:SurvivorRatio: 用来设置新生代中的eden空间和from/to空间的比例。含义:-XX:SurvivorRatio=eden/from=eden/to
总结:不同的堆分布情况,堆系统执行会产生一定的影响,在实际工作中,应该根据系统的特点做出合理的配置,基本策略:尽可能将对象预留在新生代,减少老年代的GC次数。除了额可以设置新生代的绝对大小(-Xmn),还可以使用(-XX:NewRatio)设置新生代和老年代的比例:-XX:NewRatio=老年代/新生代
在这里插入图片描述
在这里插入图片描述

堆溢出处理

在java程序的运行过程中,如果堆空间不足,则会抛出内存溢出的错误(Out Of Memory)OOM,一旦这类问题发生在生产环境,可能引起严重的业务中断,java虚拟机提供了-XX:+HeapDumpOnOutOfMemoryError,使用该参数可以在内存溢出时导出整个堆信息,与之配合使用的还有参数-XX:HeapDumpPath,可以设置导出堆的存放路径。
内存分析工具:Memory Analyzer (eclipse 插件)
查看代码性能工具:virtual vm https://www.cnblogs.com/winner-0715/p/7173792.html
在这里插入图片描述
在这里插入图片描述
对生成的Test03.dump 放到eclispe中 然后使用刚刚安装的插件Memory AnaLyzer 1.5.0 进行查看
错误信息:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
解决方案:添加内存 -Xms10m -Xmx10m 。。。。

栈配置

Java虚拟机提供了参数-Xss来指定线程的最大栈空间,这个参数也直接决定了函数可调用的最大深度。

方法区

和java堆一样,方法区时一块所有线程共享的内存区域,它用于保存系统的类信息,方法区(永久区)可以保存多少信息是可以进行配置的,在默认情况下,-XX:MaxPermSize为64MB,系统运行时产生大量的类,就需要设置一个相对合适的方法区,以免出现永久区内存溢出的问题。
-XX:PermSize=64M -XX:MaxPermSize=64M

直接内存配置

直接内存也是java程序中非常重要的组成部分,特别时广泛用在NIO中,直接内存跳过了java堆,使java程序可以直接访问原生堆空间,因此在一定程度上加快了内存空间的访问速度。但是说直接内存一定就可以提高内存访问速度也不见得,具体情况具体分析。
相关配置参数:-XX:MaxDirectMemorySize,如果不设置默认值为最大堆空间,即-Xmx。直接内存使用达到上限时,就会触发垃圾回收,如果不能有效的释放空间,就会引起系统的OOM

Client和Server虚拟机工作模式

目前java虚拟机支持Client和Server两种运行模式,使用参数-client可以执行使用Client模式,使用-server即使用Server模式。可以直接在命令查看当前计算机系统自动选择的运行模式。java -version即可

二者区别:
Client模式相对Server启动较快,如果不追求系统的长时间使用性能仅仅是测试,可以使用Client模式。而Server模式则启动比较慢,原因是会对其进行复杂的系统性能信息收集和使用更复杂的算法对程序进行优化,一般我们的生产环境都会使用Server模式,长期运行其性能要远远快于Client模式
jdk 1.7之后 都是server模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值