JVM — JVM 调优实战
📋 本文节选自《JVM 面试题(下)》,返回 查看全部章节
六、JVM调优
48. JVM 调优的参数可以在那设置参数值
- 可以在IDEA,Eclipse,工具里设置
- 如果上线了是WAR包的话可以在Tomcat设置
- 如果是Jar包直接 :java -jar 是直接插入JVM命令就好了
java -Xms1024m -Xmx1024m ...等等等 JVM参数 -jar springboot_app.jar &49. 说一下 JVM 调优的工具?
JDK 自带了很多监控工具,都位于 JDK 的 bin 目录下,其中最常用的是 jconsole 和 jvisualvm 这两款视图监控工具。
jconsole:用于对 JVM 中的内存、线程和类等进行监控;
![ ][nbsp 15]
- jvisualvm:JDK 自带的全能分析工具,可以分析:内存快照、线程快照、程序死锁、监控内存的变化、gc 变化等。
50. 常用的 JVM 调优的参数都有哪些?
#常用的设置>-Xms:初始堆大小,JVM 启动的时候,给定堆空间大小。>-Xmx:最大堆大小,JVM 运行过程中,如果初始堆空间不足的时候,最大可以扩展到多少。>-Xmn:设置堆中年轻代大小。整个堆大小=年轻代大小+年老代大小+持久代大小。>-XX:NewSize=n 设置年轻代初始化大小大小>-XX:MaxNewSize=n 设置年轻代最大值>-XX:NewRatio=n 设置年轻代和年老代的比值。如: -XX:NewRatio=3,表示年轻代与年老代比值为 1: 3,年轻代占整个年轻代+年老代和的 1/4>-XX:SurvivorRatio=n 年轻代中 Eden 区与两个 Survivor 区的比值。注意 Survivor 区有两个。8 表示两个Survivor :eden=2:8 ,即一个Survivor占年轻代的1/10,默认就为8>-Xss:设置每个线程的堆栈大小。JDK5后每个线程 Java 栈大小为 1M,以前每个线程堆栈大小为 256K。>-XX:ThreadStackSize=n 线程堆栈大小>-XX:PermSize=n 设置持久代初始值>-XX:MaxPermSize=n 设置持久代大小>-XX:MaxTenuringThreshold=n 设置年轻带垃圾对象最大年龄。如果设置为 0 的话,则年轻代对象不经 过 Survivor 区,直接进入年老代。> #下面是一些不常用的>-XX:LargePageSizeInBytes=n 设置堆内存的内存页大小>-XX:+UseFastAccessorMethods 优化原始类型的getter方法性能>-XX:+DisableExplicitGC 禁止在运行期显式地调用System.gc(),默认启用>-XX:+AggressiveOpts 是否启用JVM开发团队最新的调优成果。例如编译优化,偏向锁,并行年老代收集 等,jdk6纸之后默认启动>-XX:+UseBiasedLocking 是否启用偏向锁,JDK6默认启用>-Xnoclassgc 是否禁用垃圾回收>-XX:+UseThreadPriorities 使用本地线程的优先级,默认启用 等等等…
51. JVM的GC收集器设置
-xx:+Use xxx GC
xxx 代表垃圾收集器名称
-XX:+UseSerialGC:设置串行收集器,年轻带收集器>-XX:+UseParNewGC:设置年轻代为并行收集。可与 CMS 收集同时使用。JDK5.0 以上,JVM 会根据系统>配置自行设置,所以无需再设置此值。>-XX:+UseParallelGC:设置并行收集器,目标是目标是达到可控制的吞吐量>-XX:+UseParallelOldGC:设置并行年老代收集器,JDK6.0 支持对年老代并行收集。>-XX:+UseConcMarkSweepGC:设置年老代并发收集器>-XX:+UseG1GC:设置 G1 收集器,JDK1.9默认垃圾收集器
为了帮助更多的粉丝朋友,找到个好工作,多拿几个offer。苏三最近建一些工作内推群,群里目前已经收集了很多内推岗位,大厂、中厂、小厂、外包都有。欢迎HR、开发、测试、运维和产品加入。

扫描下方微信,备注:网站+所在城市,即可拉你进工作内推群。
