为啥我用centos7有点小卡啊?配置给足了,就是鼠标放到图标上时高亮延迟0.5秒启动程序有2秒

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥我用centos7有点小卡啊?配置给足了,就是鼠标放到图标上时高亮延迟0.5秒启动程序有2秒相关的知识,希望对你有一定的参考价值。

为什么我用centos7有点小卡啊?配置给足了,就是鼠标放到图标上时高亮延迟0.5秒启动程序有2秒延迟~~!

第一你安装的镜像中安装的东西太杂,把开发环境神马的都安装了
第二镜像最好从官网上下,第三方有的是冠官方之名的,换个普通的镜像试试(有可能你使用的是everything)
第三你驱动有点问题
第四运行虚拟机时你在windows上也运行了其他的东西整体内存缺乏,比如说浏览器(打开网页多了耗费内存)
参考技术A 是不是显卡驱动啥的.追问

我下载是官方的镜像啊,那为什么我跑ubuntu,redhat6.5都没延迟的问题...
要是显卡驱动的问题那怎么解决呢...

追答

如果是N卡和amd卡,一般是要装驱动,Intel卡不存在驱动的问题。

卡可能是显卡的问题,也可能是服务开多了,开桌面特效了,所以可以多方面想。

参考技术B 要么驱动要么中毒追问

为啥?我windows刚刚扫的没有啊

追答

驱动

追问

那怎么解决呢

追答

换驱动 或者你看你最近装了啥

因为我把JMM原理讲解了一遍,这给足了我涨薪的底气!

一、什么是JMM?

JMM指的是Java内存模型,即 Java Memory Model

  • Java内存模型并不是一种实际存在的东西,而是一种人为形成的约定,是一种概念。

    关于JMM,我们需要了解一些相关的同步约定 :
  1. 线程在解锁前,必须将线程中的工作内存中存储的值即时刷新到主内存中的共享变量!
  2. 线程在加锁前,必须读取主存中的最新值到工作内存中!
  3. 加锁和解锁是同一把锁!

线程中操作的数据要从主内存中读取,并备份到线程自己的工作内存中,作为副本,主存并不会主动向线程更新数据。

线程的八种内存交互操作

  • lock(锁定):作用于主内存的变量,把一个变量标识为线程独占状态
  • unlock(解锁) :作用于主内存的变量,把一个处于锁定状态的共享变量释放
  • read(读取):作用于主内存的变量,把一个变量的值从主内存传输到线程的工作内存中
  • load(加载):作用于工作内存的变量,把通过read操作获取的变量值放入工作内存中
  • use(使用):作用于工作内存的变量,把工作内存中的变量传输给执行引擎,每当虚拟机遇到需要使用到变量的值,就会使用到这个指令
  • assign(赋值):作用于工作内存的变量,把执行引擎传输过来的值放入工作内存
  • store(存储):作用于主内存的变量,把一个从线程中的工作内存的变量值传送到主内存中,以便后续的write操作
  • write(写入):作用于主内存的变量,将store操作从工作内存获取的变量值放入主内存中

JMM对以上八种内存操作指令做出了如下约束:

    • readloaduserassignstorewritelockunlock必须成对出现,不允许单独操作其中一条指令
    • 不允许线程丢弃离它最近的assign操作,即工作内存中的变量值改变之后,必须告知主内存
    • 不允许一个线程将没有assign过的数据从工作内存同步会主内存
    • 一个新的变量必须在主内存中产生,不允许工作内存私自初始化一个变量来作为共享变量,即实施usestore操作之前 , 必须经过 load 和assign操作
    • 同一变量同一时间只允许一个线程对其进行lock操作;多次lock之后,必须执行相同次数的unlock对其解锁
    • 如果对一个变量进行lock操作,会清空所有工作内存中此变量的值, 即每次获得锁的线程,加锁前必须要重新读取主内存中的变量值,才能提交给执行引擎进行use操作
    • 如果一个变量没有被lock,就不能对其进行unlock操作,也不能对一个被其他线程锁住的变量进行unlock
    • 对一个变量加锁之前,必须把工作内存中的变量值同步回主内存

存在问题:

假设现在有一个main线程和一个普通线程,普通线程执行的操作是:当num为 0 时 ,一直循环下去;此时main线程给num赋值为 1 ,普通线程并不知道num已经被修改,程序就会一直执行,不会停止!

public class VolatileDemo 
    private static int num = 0;
    public static void main(String[] args) 
        new Thread(()-> // 线程1
            while (num == 0) 

            
        ).start();

        try 
            TimeUnit.SECONDS.sleep(1);
         catch (InterruptedException e) 
            e.printStackTrace();
        
        num = 1;
        System.out.println(num);
    


解决方法 : volatile 关键字

什么是volatile ?

  • volatile 是一种轻量级的同步机制,相对于synchronized来说

  • 保证可见性 => JMM 主内存中的共享变量修改之后,会通知所有线程备份到各自的工作内存中

  • 不保证原子性

  • 禁止指令重排

最后,祝大家早日学有所成,拿到满意offer

以上是关于为啥我用centos7有点小卡啊?配置给足了,就是鼠标放到图标上时高亮延迟0.5秒启动程序有2秒的主要内容,如果未能解决你的问题,请参考以下文章

因为我把JMM原理讲解了一遍,这给足了我涨薪的底气!

获取nginx的当前时间,为啥比电脑的时间多两个小时啊?怎么解决啊?

求助啊为啥装centos7一点安装就黑屏

Luogu P1502 窗口的星星

我用Netbeans写的程序,tomcat为啥每次都要重新启动一下才能运行啊???

为啥html表单中用我用get能请求到页面用post不能请求到页面啊??