1、JVM 究竟需不需要调优?
JVM 经过这么多年的发展和验证,整体是非常健壮的。个人认为99%的情况下,基本用不到 JVM 调优。
通常来说,我们的 JVM 参数配置大多还是会遵循 JVM 官方的建议,例如:
- -XX:NewRatio=2,年轻代:老年代=1:2
- -XX:SurvivorRatio=8,eden:survivor=8:1
- 堆内存设置为物理内存的3/4左右等
JVM 参数的默认(推荐)值都是经过 JVM 团队的反复测试和前人的充分验证得出的比较合理的值,因此通常来说是比较靠谱和通用的,一般不会出大问题。
当然,更重要的是,大部分的应用 QPS 都不到10,数据量不到几万,这种低压环境下,想让 JVM 出问题,说实话也挺难的。主动的JVM调优,一般收益很小,并且这种收益存在很大的不确定性。
JVM有哪些可以调优的地方?为什么?
要明白jvm调优,先得搞清楚JMM(java内存模型)。 Java 内存区域和内存模型是不一样的东西,内存区域是指 Jvm 运行时将数据分区域存储,强调对内存空间的划分。
而内存模型(Java Memory Model,简称 JMM )是定义了线程和主内存之间的抽象关系,即 JMM 定义了 JVM 在计算机内存(RAM)中的工作方式,如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。
|