码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 常见故障及其解决方法


    目录

    一、内存冲高

    1.原因

    2.解决方法

    (1)查看内存状态使用命令:top

    (2)查看缓存命令:free

    (3) 内存泄漏和内存溢出

    二、死锁


    一、内存冲高

    1.原因

    (1)进程占用过多

    (2)缓存占用过高

    (3)内存泄漏和内存溢出

    2.解决方法

    (1)查看内存状态使用命令:top

    (2)查看缓存命令:free

    缓冲(buffer): 当我们操作需要从磁盘中读取文件时,内核先查看文件是否在缓存中,如果在的话,直接读取,就不需要再从磁盘中读取。如果不在,内核就会调度块I/O去磁盘中读取,然后内核将读来的数据放在缓存中。

    缓存(cache): 当我们需要写入文件到磁盘中,不会直接写入到磁盘中,会先写入到缓存中,用来减少对磁盘的I/O操作。

    free和available: 两个都是空闲内存,不过free表示真正没有被使用的物理内存数量,而available则表示从应用程序的角度看到的可用内存数量。

    Linux内核为了提升对磁盘的操作性能,会消耗一部分内存去缓存磁盘中的数据,就是buffer和cache,所以对于内核来说,这两个都是属于已经被使用的内存,当应用程序需要内存时,没有足够的free内存,内核就会从缓存中国后手内存来满足应用程序。

    buffer与cache的区别:两者都是RAM中的数据。

    buffer是用于存放要输出到disk(块设备)的数据的,

    cache是存放从disk上读出的数据。这二者是为了提高IO性能的,并由OS管理。

    手动释放cache中的内存

    在释放前,可以使用sync命令,将内存中的数据强制写入到磁盘中,避免数据丢失

    (3) 内存泄漏和内存溢出

    内存泄漏:是指程序在申请内存后,无法释放已申请的内存空间,多个程序申请内存后,会导致内存空间不足。

    内存溢出:

    程序申请内存时,没有足够的空间供其使用,出现内存溢出。内存泄漏最终会导致内存溢出。

    内存泄漏可以分成4类

    ①常发性内存泄漏: 发生内存泄漏的代码会被多次执行到,每次执行的时候都会导致一块内存泄漏。

    ②偶发性内存泄漏: 发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生,长发性和偶发性是相对的,对于特定的环境,偶发性的也许就变成了长发性,所以测试环境和测试方法对检测内存泄漏至关重要。

    ③一次性内存泄漏: 发生内存泄漏的代码只会被执行一次,由于算法上的缺陷,导致总会有一块仅且有一块内存发生泄漏。

    ④隐式内存泄漏: 程序在运行过程中不停的分配内存,但是直到结束的时候才释放内存,严格的说这里并没有发生内存泄漏,因为最终程序释放了所申请的内存,但是对于一个服务器程序,需要运行几个月,不及时释放内存也可能导致最终耗尽系统的所有内存。

    内存溢出的原因
    ①内存中加载的数据过于庞大,如一次从数据库读取过多的数据,内存供给不足,导致内存溢出。

    ②集合类中有对对象的引用,使用完后未清空,使得JVM(运行java代码的容器,相当于一台java虚拟机),不能回收。

    ③代码中存在死循环或循环产生过多重复的对象实体。

    ④使用第三方软件的bug

    ⑤启动参数内存设定的过小。

    详细内容:内存压力过高怎么处理_Ggggggggggu的博客-CSDN博客

                    运维常见命令(二)内存不足报警_bohu83的博客-CSDN博客
    如何排查线上内存飙高问题_程序员内卷指南的博客-CSDN博客_线上内存占比过高怎么排查

    Linux服务器之内存过高解决思路_Jeremy_Lee123的博客-CSDN博客_linux内存使用率高怎么解决

    二、死锁

    1.死锁:事务之间互相等待对方(AB-BA问题)。
    2.排查死锁:用锁的信息链表、事务等待链表画成图,若图存在回路【深度优先遍历算法判断回路】则说明死锁。
    3.解决:按DFS判出回路后,把 undo 量最小的事务给回滚掉。

    详细内容:2021年2月社招面经分享_Java资深/高级开发_Victor _Lv的博客-CSDN博客

  • 相关阅读:
    Java中的标记接口(标签接口)
    Netty,Tcp,socket的java框架,netty学习
    python版本的Pairs图
    LVS+Keepalived NGINX+Keepalived 高可用群集实战部署
    苹果m2芯片生态兼容性调研(java全栈架构师需求)
    LeetCode 362 期周赛
    一种朴素的消失点计算方法
    【地平线旭日X3派试用体验】WIFI连接,SSH登录,TogetherROS安装(第二节)
    vue大型电商项目尚品汇(后台终结篇)day06 重磅!!!
    当遇到 502 错误(Bad Gateway)怎么办
  • 原文地址:https://blog.csdn.net/Drw_Dcm/article/details/126904159
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号