1. 配置原因

在JDK 8 提供了一种消除伪内存共享的方式:

  1. 在code中添加sun.misc.Contended注解;
  2. 将JVM参数配添加上-XX:-RestrictContended;
    则实现了一个小的测试程序,用于测试上述配置的效果;

2. 配置方法

配置方法很简单,将上述参数添加到配置文件中即可(特别强调,需要使用JDK8 ,JDK12 不支持):

  1. 上述文件打开方式为:工具栏中 Help --> Edit Custom Vm Options
  2. -XX参数中 boolean类型在-XX:+RestrictContended为该属性设置为true,-XX:-RestrictContended,为设置为false;
  3. 上述参数为JVM虚拟机启动时使用;

3. 问题调试

上述参数修改后,在code中添加好注解,发现一个问题:

Contended类找不到,则肯定编译不过啊,这个问题需要解决:

3.1 排查方向:

  1. 需要确认是否为上述JVM参数没有添加成功?其实这个可能性比较小,因为从JVM建立的角度来讲,这些参数要在运行时才会使用,而此时还是在编译阶段;

    • 在命令行打印:java -XX:+PrintFlagsFinal,但是通过这个命令看到我们JVM参数运行的时候:RestrictContended为true,难道真的是参数配置没有生效?
    • 由于JVM参数是在运行时生效,我决定先注释掉该注解,先运行下试试上述参数是否有生效:

      从这个结果很明显可以看出这个参数配置是成功了的,所以原因的话应该跟包相关;
  2. 需要确认是这个类确实没有,还是我们这里没有导入;

    可以看到上述包内确实没有Contended类,则有两个可能:

    • JDK版本不对
    • 该包我们没有导入;

则首先验证是否为JDK版本不对的问题, 有可能在JDK8中添加进去后,在JDK12被优化掉了;

  1. 修改配置,将project版本配置为JDK1.8

    由于我这里之前添加过1.8的path,所以就不用另外添加一次了,直接选择路径即可;
  2. SDKs中确认下版本:
  3. Module
  4. compile

    修改完成后,查看该注解:

    已经可以找到了

所以上述问题的原因为JDK版本不对,即这个配置还需要在JDK 8才能使用

4. 测试结果

  1. 没有添加该注解:
  2. 添加注解

    可以看到整体速度提高了一倍

IDEA 配置-XX:-RestrictContended参数相关推荐

  1. java虚拟机-d参数配置_JVM虚拟机参数介绍

    慢慢学,每天进步一点点,总有一天会变成心目中向往的样子. 在这篇文章中将会介绍常用的JVM参数配置,以及每个参数的含义. 配置堆内存 每一JVM应用程序都有一个非常重要的配置,堆内存的配置,它影响这应 ...

  2. jvm一般相关配置OutOfMemoryError关参数配置解释

    一般运行java应用都会根据实际情况设置一些jvm相关运行参数 特别是有关内存和oom溢出等参数,方便后续问题定位和解决 如常用的以下配置 nohup java -Xms256m -Xmx24g -X ...

  3. Python中sklearn中HistGradientBoostingRegressor回归器配置单调约束参数monotonic_cst提高回归模型的抗噪声以及局部扰动的能力

    Python中sklearn中HistGradientBoostingRegressor回归器配置单调约束参数monotonic_cst提高回归模型的抗噪声以及局部扰动的能力 目录

  4. springboot配置单独的参数文件

    一.介绍 是不是经常用@Value注解?用过springboot的都知道它是从application.properties文件中引入某个变量的值,是不是已经灰常熟悉了? 默认在springboot启动 ...

  5. 台式计算机技术参数响应表,联想台式电脑配置推荐及参数详情【图文】

    台式计算机是目前家用产品中最重要的产品之一,笔记本仅仅是因其便携性的特点而具备较大市场,在家庭内部,台式电脑才是必须具备的.联想是目前较为著名的电脑品牌,本次小编将为大家列举和推荐几个联想电脑的配置作 ...

  6. R语言ggpubr包的ggscatter函数可视化散点图(scatter plot)、设置add参数为loess为散点图添加局部加权回归曲线、配置conf.int参数为回归线添加置信区

    R语言ggplot2可视化:使用ggpubr包的ggscatter函数可视化散点图(scatter plot).设置add参数为loess为散点图添加局部加权回归曲线.配置conf.int参数为回归线 ...

  7. Nginx配置详情-配置说明-参数优化(一)

    前言:Nginx?为什么选择Nginx?还不用Nginx你就out了.Nginx相比Apache拥有更块.高扩展性.高可用性.低内存消耗.单机支持10万以上并发等等.后面将分为几篇文章来简单介绍Ngi ...

  8. -XX:CMSInitiatingOccupancyFraction和-XX:+UseCMSInitiatingOccupancyOnly参数

    -XX:CMSInitiatingOccupancyFraction:在使用CMS收集器的情况下,指定老年代被使用的内存空间的阈值,达到该阈值则触发Full GC. -XX:+UseCMSInitia ...

  9. Elasticsearch常用配置及性能参数

    Elasticsearch常用配置及性能参数 cluster.name: estest   集群名称 node.name: "testanya"  节点名称 node.master ...

  10. 跟着团子学SAP SD-RRB(按资源开票)流程演示及核心配置(DIP参数文件) DP80/DP81/DP90/DP91

    在企业的日常销售业务中,有一类常见的销售场景是根据实际消耗的资源(消耗的人工.物料等)为基础去向客户进行开票,比如Time&Material类型的合同.这类业务场景可以统称为RRB的业务模式, ...

最新文章

  1. c语言信号机制以及中断
  2. Windows中用运行命令直接启动指定软件的方法
  3. tensorflow_yolo-v3笔记 IOU:Intersection over union 交并比
  4. java 操作 mongodb_Java操作MongoDB数据库方法详解
  5. java把对象转成json_java 把对象 对象转换成json字符串 | 学步园
  6. C语言——结构体链表,附完整示例
  7. linux下-bash: ls: command not found
  8. CentOS安装nginx方法命令教程
  9. Mathtype公式编辑器常用快捷键
  10. LibSass 的二进制文件(P:\HBuilderX\plugins\compile-node-sass\node_modules\node-sass-china\vendor\win32-ia32
  11. 期末考试-第一章-计算机视觉综述知识整理
  12. Datax-HdfsWriter如何实现支持decimal类型数据写入
  13. The end tag is unbalanced异常
  14. 国内java报表软件简单对比
  15. 前端如何设置浏览器窗口的网站logo
  16. 什么是异构数据源和分布式数据库
  17. 最常见的几种手机快充方式和原理
  18. (UVA1395)Slim Span(A)
  19. 美国芯片陆续转向,或许为当初的做法后悔不迭,芯片补贴也难改局面
  20. uboot源码分析-启动第一阶段

热门文章

  1. Python学习:3.Python学习基础
  2. 5.27 indeed 第三次网测
  3. lua定义一个简单的类
  4. [Django]模型提高部分--聚合(group by)和条件表达式+数据库函数
  5. [JavaScript] - replaceAll,将字符串中的字母或数字等全部替换掉的方式
  6. iphone 内部函数使用 (函数可能无法响应的部分解决方案)
  7. java实现Excel数据导出
  8. DEFCON China倒计时 没想到炸屏“玩坏”百度
  9. 如何使用File APIs来读取文件
  10. 鳄梨种植者使用传感器节省种植成本