首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >JVM - 应用JVM核心参数推荐设置

JVM - 应用JVM核心参数推荐设置

作者头像
小小工匠
发布2021-08-17 15:25:52
发布2021-08-17 15:25:52
1.8K0
举报
文章被收录于专栏:小工匠聊架构小工匠聊架构

Pre

JVM-08垃圾收集Garbage Collection【GC常用参数】


JDK版本

= 1.8


核心参数

代码语言:javascript
复制
‐Xms2048M ‐Xmx2048M ‐Xmn1024M ‐Xss512K ‐XX:MetaspaceSize=256M ‐XX:MaxMetaspaceSize=256M 


线程栈

默认1M , 不足的话 StackOverflowError

-Xss设置越小 ,说明一个线程栈里能分配的栈帧就越少,但是对JVM整体来说能开启的线程数会更多 ,当然了,线程多了并不一定性能就高,只是理论上是这样的。


方法区(元空间)

代码语言:javascript
复制
 -XX:MetaspaceSize=N  -XX:MaxMetaspaceSize=N 

【参数解读】

  • -XX:MaxMetaspaceSize: 元空间最大值, 默认不限制, 取决于机器本身的内存
  • -XX:MetaspaceSize: 元空间的初始空间大小, 默认21M,达到该值就会触发full gc进行类型卸载, 同时GC收集器会对该值进行调整: 如果释放了大量的空间, 就适当降低该值; 如果释放了很少的空间, 那么在不超过MaxMetaspaceSize的情况下, 适当提高该值的大小(类似自动扩容)。

对于64位JVM来说,元空间的默认初始大小是21MB,若不足,GC后自动扩容,无上限,取决于操作系统的内存大小。


【经验之谈】

一般建议在JVM参数中将MetaspaceSize和MaxMetaspaceSize设置成一样的值 ,8G物理内存的机器来说,可以将这两个参数设置为256M

如果应用启动比较慢,可以看下是不是因为方法区的JVM参数没有设置(默认值21 ,频繁GC,自动扩容)导致的。


栈溢出案例 StackOverflowError

代码语言:javascript
复制
/**
 * ‐Xss验证
 */
public class StackOverFlowErrorTest {
    private static int count = 0 ;

    public static void main(String[] args) {
        try {
            doCall();
        }catch (Throwable e){
            e.printStackTrace();
            System.out.println("递归调用次数:" + count);
        }

    }

    private static  void doCall()    {
        count++;
        // 递归调用,压入线程栈
        doCall();
    }
}

默认配置 -Xss1m

代码语言:javascript
复制
java.lang.StackOverflowError
	at com.artisan.gof.test.StackOverFlowErrorTest.doCall(StackOverFlowErrorTest.java:23)
	........
	........
	........
	at com.artisan.gof.test.StackOverFlowErrorTest.doCall(StackOverFlowErrorTest.java:23)
递归调用次数:20898

原因分析

递归调用导致栈溢出~


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/06/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Pre
  • JDK版本
  • 核心参数
    • 线程栈
    • 方法区(元空间)
  • 栈溢出案例 StackOverflowError
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档