精华内容
下载资源
问答
  • java 溢出

    2014-09-26 17:41:13
    java 溢出包括堆溢出和栈溢出 堆默认的分配大小为 64M;

    java 溢出包括堆溢出和栈溢出


    堆默认的分配大小为 64M


    堆溢出实例

    public class OutOfMerory {



    private byte [] [] data=new byte[1024][1024];//data大小为1M;

    public static void main(String[] args) {


    ArrayList list =new ArrayList();

    while(true)
    {

    list.add(new OutOfMerory());

    //每次加载时都会有1M的内存占用,当加载不到(有其他原因)62次时,堆空间被用完,此时JVM回收机制会去堆中轮询把垃圾(即该对象没有被引用或者字符串,数组)回收掉,但是此时list集合持有对象的引用,但堆已经建满,没有空间再可以分配,所以会造成内存溢出

    //2.new OutOfMeory();这个不会溢出,因为匿名对象没被引用,由垃圾回收机制回收


    }


    }


    }


    栈溢出,栈默认空间大小为2M

    栈定义:当调用main函数时就会创建一个栈

    main函数的局部变量放在栈中

    mian函数中方法会创建另一个栈,知道方法结束

    public class StackOverFlow {



    public static void main(String[] args) {

    test();
    }


    public static void test()
    {

    test();//递归调用无限次,栈空间被用完,造成内存溢出

    }


    }

    3.缓存,当大量用户访问时,会造成大量的内存被占用,当所有的用户同时访问会造成内存溢出,所以需要设计一个机制来避免这种情况


    堆和栈的大小可以调节

    合适的才是最好的

    //

    解决内存溢出需要注意

    对于堆

    规避死循环

    对象不要创建的太大 如果64M,直接溢出

    避免使用太大的数组连续空间


    对于栈

    写递归时需要加个中断条件

    展开全文
  • JAVA溢出和精度损失

    2019-04-08 09:01:43
    java中使用强制转换有可能导致溢出或损失精度。 当把容量大的类型转换为容量小的类型时就有可能导致溢出; 比如吧int类型的2019转换成byte类型。Int类型的2019的源码、反码、和补码都是: 00000000 00000000 ...

    开发工具与关键技术:MyEclipse 10 JAVA
    作者:黄冠棋
    撰写时间:2019年04月7日

    在java中使用强制转换有可能导致溢出或损失精度。
    当把容量大的类型转换为容量小的类型时就有可能导致溢出;
    比如吧int类型的2019转换成byte类型。Int类型的2019的源码、反码、和补码都是:
    00000000 00000000 00000111 11100011
    由于byte类型只有八位所以转换成byte类型后就变成了:
    11100011 它的反码为:10011101最后得到的结果就为-29。
    在这里插入图片描述
    当把整数转换成浮点数时当整数足够大时就有可能导致精度损失
    比如吧Integer的最大值转换成float类型
    Integer的最大值有32位除去一位符号位还有31位尾数位;
    虽然float类型最大也是32位但float除去一位符号位后还有8位指数位只剩下23位尾数位;
    所以当Integer的最大值转换成float的时候就会损失精度。
    在这里插入图片描述

    展开全文
  • (1)检测JAVA溢出攻击 1.数据搜集:加载ADFA-LD正常样本数据,定义遍历目录下文件的函数,从攻击数据集中筛选和JAVA溢出攻击相关的数据,原理同(四) 2.特征化:与(四)一致,使用词集模型 3.训练样本 ...

    (1)检测JAVA溢出攻击

    1.数据搜集:加载ADFA-LD正常样本数据,定义遍历目录下文件的函数,从攻击数据集中筛选和JAVA溢出攻击相关的数据,原理同(四)

    2.特征化:与(四)一致,使用词集模型

    3.训练样本

    logreg = linear_model.LogisticRegression(C=1e5)

    4.效果验证与(四)原理一致

    (2)识别验证码

    1.数据搜集:使用MNIST,同(七:朴素贝叶斯识别验证码)

    2.特征化:同(七)

    3.训练模型:同(七)

    4.效果验证:同(七)

     

    展开全文
  • Java溢出的解决方法

    千次阅读 2018-02-08 15:36:19
    相信有一定java开发经验的人...在解决java内存溢出问题之前,需要对jvm(java虚拟机)的内存管理有一定的认识。jvm管理的内存大致包括三种不同类型的内存区域:Permanent Generation space(永久保存区域)、Hea...

    相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识。

    在解决java内存溢出问题之前,需要对jvm(java虚拟机)的内存管理有一定的认识。jvm管理的内存大致包括三种不同类型的内存区域:Permanent Generation space(永久保存区域)、Heap space(堆区域)、Java Stacks(Java栈)。其中永久保存区域主要存放Class(类)和Meta的信息,Class第一次被Load的时候被放入PermGen space区域,Class需要存储的内容主要包括方法和静态属性。堆区域用来存放Class的实例(即对象),对象需要存储的内容主要是非静态属性。每次用new创建一个对象实例后,对象实例存储在堆区域中,这部分空间也被jvm的垃圾回收机制管理。而Java栈跟大多数编程语言包括汇编语言的栈功能相似,主要基本类型变量以及方法的输入输出参数。Java程序的每个线程中都有一个独立的堆栈。容易发生内存溢出问题的内存空间包括:Permanent Generation space和Heap space。

    第一种OutOfMemoryError: PermGen space

    发生这种问题的原意是程序中使用了大量的jar或class,使java虚拟机装载类的空间不够,与Permanent Generation space有关。解决这类问题有以下两种办法:

    1. 增加java虚拟机中的XX:PermSize和XX:MaxPermSize参数的大小,其中XX:PermSize是初始永久保存区域大小,XX:MaxPermSize是最大永久保存区域大小。如针对tomcat6.0,在catalina.sh 或catalina.bat文件中一系列环境变量名说明结束处(大约在70行左右) 增加一行: JAVA_OPTS=" -XX:PermSize=64M -XX:MaxPermSize=128m" 如果是windows服务器还可以在系统环境变量中设置。感觉用tomcat发布sprint+struts+hibernate架构的程序时很容易发生这种内存溢出错误。使用上述方法,我成功解决了部署ssh项目的tomcat服务器经常宕机的问题。
    2. 清理应用程序中web-inf/lib下的jar,如果tomcat部署了多个应用,很多应用都使用了相同的jar,可以将共同的jar移到tomcat共同的lib下,减少类的重复加载。这种方法是网上部分人推荐的,我没试过,但感觉减少不了太大的空间,最靠谱的还是第一种方法。

    第二种OutOfMemoryError:  Java heap space

    发生这种问题的原因是java虚拟机创建的对象太多,在进行垃圾回收之间,虚拟机分配的到堆内存空间已经用满了,与Heap space有关。解决这类问题有两种思路:

    1. 检查程序,看是否有死循环或不必要地重复创建大量对象。找到原因后,修改程序和算法。 我以前写一个使用K-Means文本聚类算法对几万条文本记录(每条记录的特征向量大约10来个)进行文本聚类时,由于程序细节上有问题,就导致了Java heap space的内存溢出问题,后来通过修改程序得到了解决。
    2. 增加Java虚拟机中Xms(初始堆大小)和Xmx(最大堆大小)参数的大小。如:set JAVA_OPTS= -Xms256m -Xmx1024m

    第三种OutOfMemoryError:unable to create new native thread

    在java应用中,有时候会出现这样的错误:OutOfMemoryError: unable to create new native thread.这种怪事是因为JVM已经被系统分配了大量的内存(比如1.5G),并且它至少要占用可用内存的一半。有人发现,在线程个数很多的情况下,你分配给JVM的内存越多,那么,上述错误发生的可能性就越大。

    那么是什么原因造成这种问题呢?

    每一个32位的进程最多可以使用2G的可用内存,因为另外2G被操作系统保留。这里假设使用1.5G给JVM,那么还余下500M可用内存。这500M内存中的一部分必须用于系统dll的加载,那么真正剩下的也许只有400M,现在关键的地方出现了:当你使用Java创建一个线程,在JVM的内存里也会创建一个Thread对象,但是同时也会在操作系统里创建一个真正的物理线程(参考JVM规范),操作系统会在余下的400兆内存里创建这个物理线程,而不是在JVM的1500M的内存堆里创建。在jdk1.4里头,默认的栈大小是256KB,但是在jdk1.5里头,默认的栈大小为1M每线程,因此,在余下400M的可用内存里边我们最多也只能创建400个可用线程。

    这样结论就出来了,要想创建更多的线程,你必须减少分配给JVM的最大内存。还有一种做法是让JVM宿主在你的JNI代码里边。

    给出一个有关能够创建线程的最大个数的估算公式:

    (MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads

    对于jdk1.5而言,假设操作系统保留120M内存:

    1.5GB JVM: (2GB-1.5Gb-120MB)/(1MB) = ~380 threads 1.0GB JVM: (2GB-1.0Gb-120MB)/(1MB) = ~880 threads

    对于栈大小为256KB的jdk1.4而言,

    1.5GB allocated to JVM: ~1520 threads 1.0GB allocated to JVM: ~3520 threads 

    对于这个异常我们首先需要判断下,发生内存溢出时进程中到底都有什么样的线程,这些线程是否是应该存在的,是否可以通过优化来降低线程数; 另外一方面默认情况下java为每个线程分配的栈内存大小是1M,通常情况下,这1M的栈内存空间是足足够用了,因为在通常在栈上存放的只是基础类型的数据或者对象的引用,这些东西都不会占据太大的内存, 我们可以通过调整jvm参数,降低为每个线程分配的栈内存大小来解决问题,例如在jvm参数中添加-Xss128k将线程栈内存大小设置为128k

    展开全文
  • 一、内存溢出 内存溢出:通常出现在某一块内存空间块耗尽的时候。OutOfMemory,简称OOM。 1、堆溢出 原因:大量对象占据了堆空间,而这些对象都持有强引用,导致...import java.util.ArrayList; public class...
  •  这属于java的益处问题,可以参考以下: 《原码, 反码, 补码 详解》 问题二举例: -2^31 - 1 = 2^31 - 1 (int类型的最大值,很明显这小于-1前的数)  这属于java的益处问题,可以参考以下: 《原码,...
  • Java 数值溢出

    2016-06-12 21:39:30
    Java 数值溢出
  • 摘要: Java内存溢出详解 一、常见的Java内存溢出有以下三种: 1. java.lang.OutOfMemoryError: Java heap space —-JVM Heap(堆)溢出JVM在启动的时候会自动设置JVM Heap的值,其初始空间(即-Xms)是物理内存的1/64...
  • Java内存溢出分类

    千次阅读 2010-02-02 21:02:00
    关于Java溢出分类,我经常碰到的是两类:一类是java.lang.OutOfMemoryError: Java heap space,一类是java.lang.OutOfMemoryError: PermGen space。在这两类中,前者碰见的次数比较频繁。因为导致Java heap space的...
  • Java溢出

    2018-03-16 16:20:43
    编写Java溢出代码 代码清单如下 import java.util.*; /** * Java堆内存溢出异常测试 * VM args: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError **/ public class OOME { static class OOMObject{ }...
  • java溢出

    2019-03-04 16:51:26
     在java虚拟机规范中,虚拟机栈和本地方法栈都会出现StackOverflowError和OutofMemoryError,程序计数器是java虚拟机中唯一一块不会产生error的内存区域。 一、StackOverflowError(栈溢出) StackOverflowError...
  • java 内存溢出

    2015-11-26 13:59:13
    myeclipse java 内存溢出解决办法 这里填写jsp存放的位置
  • java溢出

    2017-07-10 10:56:16
      在Eclipse 配置运行参数或者在命令行中加上参数 ...eclipse 安装 MAT插件,使用。...虚拟机栈内存溢出: ...大量产生java类的应用,类被不同类加载器多次加载。都可能产出方法区溢出。 本机...
  • Java内存溢出详解

    2015-05-20 10:04:06
    Java内存溢出详解 一、常见的Java内存溢出有以下三种: 1 java.lang.OutOfMemoryError: Java heap space —-JVM Heap(堆)溢出 JVM在启动的时候会自动设置JVM Heap的值,其初始空间(即-Xms)是物理内存的1/64,...
  • Java溢出及栈溢出

    千次阅读 2018-09-25 09:09:26
    内存溢出Out Of Memory(OOM):指申请内存时,没有足够的内存供其使用。 内存泄露Memory Leak:内存...堆溢出信息: OutOfMemoryError : Java heap space 分析工具:Eclipse Memory Analyzer 栈溢出 HotSpo...
  • Java内存溢出

    2013-08-23 15:52:14
    Java内存溢出详解   一、常见的Java内存溢出有以下三种:   1. java.lang.OutOfMemoryError: Java heap space ----JVM Heap(堆)溢出 JVM在启动的时候会自动设置JVM Heap的值,其初始空间(即-Xms)是物理...
  • JAVA内存溢出解析

    2016-02-24 20:58:25
    JAVA内存溢出解析
  • Java 整数溢出

    2017-10-14 19:33:52
    int 类型在 Java 中是“有符号”的。所谓“有符号”就是有正负。 在计算机中用二进制...所谓数值溢出就会出现这个现象。Java 中的 int 总共就 32 位,正数上限的情况首位也只能是 0,其他位都可以是 1(就是 2^31-1
  • java内存溢出解析

    2019-01-22 11:07:46
    Java堆内存溢出 java.lang.OutOfMemoryError: Java heap space JVM Args:-Xms(最小堆内存) -Xmx(最大堆内存) 虚拟机栈和本地方法栈内存溢出 java.lang.StackOverflowError JVM Args: -Xss栈内存 创建线程...
  • java内存溢出

    2015-10-09 15:49:29
    java 堆溢出。 2. Direct Memory: 可通过 -XX:MaxDirectMemorySize 调整大小,内存不足时抛出OutOfMemoryError或者OutOfMemoryError:Direct buffer memory. 3. 线程堆栈:可通过-Xss调整大小,内存不足时抛出...
  • JAVA内存溢出

    2013-12-25 11:39:49
    常见的Java内存溢出有以下三种:  1. java.lang.OutOfMemoryError: Java heap space----JVM Heap(堆)溢出  JVM在启动的时候会自动设置JVM Heap的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)不...
  • Java 计算溢出

    2020-07-25 15:57:23
    在计算过程中如果超过数据的表达范围就会发生溢出,导致精度的流失 比如用byte类型储存一个大于128的数字是不正确的一个道理 代码展示 public static void main(String[] args) { int num1 = 1000000000;//10亿 ...
  • Java内存溢出与栈溢出

    千次阅读 2017-05-12 11:01:17
    如果出现了内存溢出问题,这往往是程序本生需要的内存大于了我们给虚拟机配置的内存,这种情况下,我们可以采用调大-Xmx来解决这种问题。 示例代码: [java]   view plain ...
  • java 内存溢出排查

    千次阅读 2018-05-26 20:28:16
    1,Java内存溢出包括:堆内存溢出和栈内存溢出 首先说下:内存溢出和内存泄露 内存溢出:out of memory 是指程序申请内存时没有足够的空间了 内存泄露: memroy leak,是指程序申请内存后,无法释放已申请的内存...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,351
精华内容 8,540
关键字:

java溢出

java 订阅