• 内存泄露和内存溢出的区别和处理方式


    内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分内存不可用的情况,重启计算机可以解决,但也有可能再次发生内存泄露,内存泄露和硬件没有关系,它是由软件设计缺陷引起的。

    1)  java.lang.OutOfMemoryError: PermGen space

    PermGen space 的全称是 Permanent Generation space, 是指内存的永久保存区域。这块内存主要是被JVM存放ClassMeta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)Heap区域不同,GC不会在主程序运行期对PermGen space进行清理。

    2) java.lang.OutOfMemoryError: Java heap space

    JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。

    区别:

    1) 内存泄露是导致内存溢出的原因之一;内存泄露积累起来将导致内存溢出。

    2) 内存泄露可以通过完善代码来避免;内存溢出可以通过调整配置来减少发生频率,但无法彻底避免。

     

    如何避免内存的泄露和溢出:

    1) 尽早释放无用对象的引用。

    2) 程序进行字符串处理时,尽量避免使用String,而应使用StringBuffer。 

    3) 尽量少用静态变量。因为静态变量是全局的,GC不会回收。

    4) 避免集中创建对象尤其是大对象,如果可以的话尽量使用流操作。

    5) 尽量运用对象池技术以提高系统性能。

    6) 不要在经常调用的方法中创建对象,尤其是忌讳在循环中创建对象。

    7) 优化配置。       

     

    一是从代码层面进行优化完善,尽量避免该情况发生;

    二是调整优化服务器配置: 

    1) 设置-Xms、-Xmx相等;

    2) 设置NewSize、MaxNewSize相等;

    3) 设置Heap size, PermGen space

  • 相关阅读:
    swoole中退出、异常与错误的处理笔记
    centos6.9+lnmp1.5环境部署swoole记录
    linux递归查找文件内容并替换
    使用FFMPEG 压缩png图片 与tinypng压缩结果对比
    XAMPP安装PHP_GMP
    Yii2 输出图片相关
    (xampp)lampp 下配置https(ssl)自签双向认证以后 apache无法启动解决方案
    PHP正则表达式匹配俄文字符
    windows 7 php 7.1 命令行 执行 中文文件名 的PHP文件
    centos6.9 安装完xampp 7.2.0后,执行/opt/lampp/lampp报错
  • 原文地址:https://www.cnblogs.com/heartstage/p/3363960.html
Copyright © 2020-2023  润新知