zoukankan      html  css  js  c++  java
  • 性能测试中的常见异常分析(转载整理)

    堆内存溢出

    java.lang.OutOfMemoryError: Java heap space
    原因:java堆内存不够或者程序中有死循环;
    解决:如果是java堆内存不够,需要通过调整JVM下面的配置来解决:
      < jvm-arg>-Xms3062m < / jvm-arg>
      < jvm-arg>-Xmx3062m < / jvm-arg>
     


    java.lang.OutOfMemoryError: GC overhead limit exceeded
    原因:内存不足,GC为了释放很小空间而占用大量时间时抛出异常
    解决:
      1、查看系统是否有使用大内存的代码或死循环;
      2、通过添加JVM配置,来限制使用内存:
      < jvm-arg>-XX:-UseGCOverheadLimit< /jvm-arg>
      
    java.lang.OutOfMemoryError: PermGen space
    原因:P区内存不够

    解决:可通过调整JVM的配置:
      < jvm-arg>-XX:MaxPermSize=128m< /jvm-arg>
      < jvm-arg>-XXermSize=128m< /jvm-arg>

      JVM的Perm区主要用于存放Class和Meta信息的,Class在被Loader时就会被放到老年代,GC在主程序运行期间不会对老年代进行清理,默认是64M大小,当程序需要加载的对象比较多时,超过64M就会报这部分内存溢出了,需要加大内存分配,一般128m足够
      
    java.lang.OutOfMemoryError: Direct buffer memory

    原因:栈溢出,方法调用层次过多或者线程栈太小。
    解决:优化程序设计,减少方法调用层次;调整-Xss参数增加线程栈大小。

    调整-XX:MaxDirectMemorySize= 参数 

    < jvm-arg>-XX:MaxDirectMemorySize=128m< /jvm-arg> 

    java.lang.OutOfMemoryError:PermGen space


    Java异常


    Throwable
    Throwable是 Java 语言中所有错误或异常的超类。
    Throwable包含两个子类: Error 和 Exception 。它们指示发生了异常情况
    Throwable包含了其线程创建时线程执行堆栈的快照,它提供了printStackTrace()等接口用于获取堆栈跟踪数据等信息


    Exception
    Exception及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件


    RuntimeException
    RuntimeException是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。

    Error
    和Exception一样, Error也是Throwable的子类。 它用于指示合理的应用程序不应该试图捕获的严重问题,大多数这样的错误都是异常条件。

    Java将可抛出(Throwable)的结构分为三种类型:

    • 被检查的异常(Checked Exception),
    • 运行时异常(RuntimeException)
    • 错误(Error)


    (01) 运行时异常
    定义 : RuntimeException及其子类都被称为运行时异常
    特点 : Java编译器不会检查它。 也就是说,当程序中可能出现这类异常时,倘若既”没有通过throws声明抛出它”,也”没有用try-catch语句捕获它”,还是会编译通过。例如,除数为零时产生的ArithmeticException异常,数组越界时产生的IndexOutOfBoundsException异常,fail-fail机制产生的ConcurrentModificationException异常等,都属于运行时异常。

    (02) 被检查的异常
    定义 : Exception类本身,以及Exception的子类中除了”运行时异常”之外的其它子类都属于被检查异常。
    特点 : Java编译器会检查它。 此类异常,要么通过throws进行声明抛出,要么通过try-catch进行捕获处理,否则不能通过编译。例如,CloneNotSupportedException就属于被检查异常。当通过clone()接口去克隆一个对象,而该对象对应的类没有实现Cloneable接口,就会抛出CloneNotSupportedException异常。
    被检查异常通常都是可以恢复的


    (03) 错误
    定义 : Error类及其子类
    特点 : 和运行时异常一样,编译器也不会对错误进行检查。
    当资源不足、约束失败、或是其它程序无法继续运行的条件发生时,就产生错误。程序本身无法修复这些错误的。例如,VirtualMachineError就属于错误。


  • 相关阅读:
    notepad++一次去掉所有空行,然后加上2个空行
    mysql设置timpstamp的默认值为 '0000-00-00 00:00:00' 时报错
    Xshell 5的快捷键
    word2010文档如何隐藏右侧灰色空白不可编辑区域
    记一次惊险的系统和分区修复
    nohup command 2>&1 & 的含义
    alexkn android第一行代码-7.广播
    android第一行代码-6.自定义控件的实现
    android第一行代码-5.监听器的两种用法和context
    android第一行代码-3.activity之间的调用跟数据传递
  • 原文地址:https://www.cnblogs.com/Zfc-Cjk/p/11231355.html
Copyright © 2011-2022 走看看