堆分配参数
-XX:PrintGC:使用这个参数,虚拟机启动后,只要遇到GC就会打印日志 -XX:+UserSerialGC:配置串行器 -XX:PrintGCDetails:可以查看详细信息,包括各个区的情况 -Xms:设置java程序启动时初始堆大小 -Xmx:设置java程序能获得的最大堆大小 -Xmx20m -Xms5m -XX:PrintCommandLineFlags:可以将隐式或者显示传给虚拟机的参数输出
总结:在实际工作中,我们可以直接将初始化的堆大小与最大堆大小设置相等,这样的好处是可以减少程序运行时的垃圾回收次数,从而提高性能。
新生代参数
-Xmn:设置新生代的大小,设置一个比较大的新生代会减少老年代的大小,这个参数对系统性能以及GC行为有很大的影响,新生代大小 一般会设置整个堆空间的1/3到1/4左右。 -XX:NewRatio=老年代/新生代:设置新生代和老年代的比例 -XX:SurvivorRatio:用来设置新生代中eden空间和from/to空间的比例 含义:-XX:SurvivorRatio=eden/from=eden/to
总结:不同的堆分布情况,对系统会产生一定的影响,在实际工作中,应该根据系统的特点做出合理的配置,基本策略,尽可能将对象预留在新生代,减少老年代的GC次数。
堆溢出问题
-XX:HeapDumpOnOutOfMemoryError:使用该参数可以在内存溢出时导出整个堆信息 -XX:HeapDumpPath:设置导出堆的存放路径
栈配置
-Xss:指定线程的最大栈空间,整个参数也直接决定了函数可调用的最大深度。
方法区
-XX:PermSize=64M -XX:MaxPermSize=64M(默认情况下) 如果系统运行时生产大量的类,就需要设置一个相对合适的方法区,以免出现永久区内存溢出的的问题。
直接内存配置
-XX:MaxDirectMemorySize:不设置时默认为最大堆空间,即-Xmx。 直接内存使用达到上限时,就回触发垃圾回收,如果不能有效的释放空间,也会引起系统的OOM。
工作模式
java -version:查看当前计算机系统自动选择的运行模式 -client:指定使用Client模式 -server:指定使用Server模式 二者区别: Client相对Server启动较快,如果不追求系统的长时间使用性能,仅仅是测试,可以使用Client模式。 Server会对其进行复杂的系统性能信息收集和使用更复杂的算法对程序进行优化,因而启动慢。 一般生产环境都会使用Server模式,长期运行其性能要远远快于Client模式。
虚拟机参数
最新推荐文章于 2019-11-01 11:33:19 发布