`
evget
  • 浏览: 141340 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类

java内存溢出异常解决方案

阅读更多
文章关键字:|java|内存|溢出|异常|方案|

  下面是具体的代码实现

  package com.free;

  import java.io.File;

  import java.io.FileInputStream;

  import java.io.FileNotFoundException;

  import java.io.FileOutputStream;

  import java.io.IOException;

  import java.io.ObjectInputStream;

  import java.io.ObjectOutputStream;

  import java.math.BigInteger;

  import java.util.ArrayList;

  import java.util.List;

  /**

  * @author free

  * springcomingagain@gmail.com

  */

  public class OutMemorySolution {

  /***

  * Change JVM Arguments

  * 调整 虚拟机参数

  *
  * First Try
  *
  * -Xloggc:gc.log
  * -Xms256M
  * -Xmx256M
  *
  * throw java.lang.OutOfMemoryError: Java heap space
  *
  *
  * Second Try
  *
  * -Xloggc:gc.log
  * -Xms512M
  * -Xmx512M
  *
  *
  */

    public static void changeJVMArguments() {

      long startTime = System.currentTimeMillis();

      System.out.println("Start : " + startTime);

      List list = new ArrayList(0);

      for (int i = 0; i < 5000000; i++) {

        list.add(new BigInteger("1000000"));

      }

      long endTime = System.currentTimeMillis();

      System.out.println("End.. : " + endTime + " Cost : " + (endTime - startTime));

    }

  /**

  * Release Object Immediate

  * 立即 释放无用的对象

  *


  *
  *  Release Object
  *
  *
  * //First Release Object
  * BigInteger temp1 = null;
  * for (int i = 0; i < 1200000; i++) {
  *     temp1 = array1[i];
  *     temp1 = null;
  *     array1[i] = null;
  * }
  * array1 = null;
  * ...
  * //Second Release Object
  * temp1 = null;
  * for (int i = 0; i < 1200000; i++) {
  *     temp1 = array2[i];
  *     temp1 = null;
  *     array2[i] = null;
  * }
  * array2 = null;
  *
  *
  */

    public static void releaseObjectImmediate() {

      long startTime = System.currentTimeMillis();

      System.out.println("First Start : " + startTime);

      BigInteger[] array1 = new BigInteger[1200000];

      for (int i = 0; i < 1200000; i++) {

        array1[i] = new BigInteger("10000000");

      }

      // First Release Object

      BigInteger temp1 = null;

      for (int i = 0; i < 1200000; i++) {

        temp1 = array1[i];

        temp1 = null;

        array1[i] = null;

      }

      array1 = null;

      long endTime = System.currentTimeMillis();

      System.out.println("First End.. : " + endTime + " Cost : " + (endTime - startTime));

      // do something start

      // do something end..

      startTime = System.currentTimeMillis();

      System.out.println("Second Start : " + startTime);

      BigInteger[] array2 = new BigInteger[1200000];

      for (int i = 0; i < 1200000; i++) {

        array2[i] = new BigInteger("10000000");

      }

      // Second Release Object

      temp1 = null;

      for (int i = 0; i < 1200000; i++) {

        temp1 = array2[i];

        temp1 = null;

        array2[i] = null;

      }

      array2 = null;

      endTime = System.currentTimeMillis();

      System.out.println("Second End.. : " + endTime + " Cost : " + (endTime - startTime));

    }



原文地址:http://www.evget.com/zh-CN/Info/ReadInfo.aspx?id=9280
分享到:
评论

相关推荐

    java内存溢出解决方案

    本文将深入探讨Java内存溢出的不同类型及其解决方案。 1. **内存溢出类型** - **1.1. java.lang.OutOfMemoryError: PermGen space** PermGen空间是JVM用于存储类元数据和常量池的部分,不会被垃圾收集器自动...

    Java内存溢出解决办法

    Java内存溢出问题,全称为Java OutOfMemoryError,是Java开发者经常遇到的运行时异常。内存溢出通常发生在程序运行过程中,系统无法为运行的应用程序分配足够的内存资源,导致程序无法正常执行。理解并解决Java内存...

    Java 内存溢出解决办法

    Java内存溢出问题通常指的是程序在试图分配内存时,无法找到足够的连续内存空间而抛出的异常。在Java中,内存分为几个区域:堆(Heap)、栈(Stack)、方法区(Method Area,Java 8后被元空间取代)以及程序计数器和...

    spring mvc重定向导致内存溢出解决方案

    当`entityId`的数据量特别大时,多次请求累积可能导致内存消耗过大,进而触发内存溢出异常。 ##### 1.2 原因分析 内存溢出的根本原因是服务器内存不足以存储所有的数据。在本例中,具体体现在以下几个方面: - **...

    图片过大引起的内存溢出解决方案

    ### 图片过大引起的内存溢出解决方案 在Android开发过程中,我们经常会遇到因加载大尺寸图片而引发的`OutOfMemoryError`(内存溢出错误)。这种问题通常发生在使用`BitmapFactory`来加载图片时,尤其是在资源有限的...

    JVM实战-对象访问与内存溢出异常解析

    2. **掌握Java堆内存溢出异常的测试**:通过编写程序不断地创建对象,直至消耗完所有可用的堆内存,从而触发`OutOfMemoryError`异常。 3. **掌握虚拟机栈和本地方法栈内存溢出异常的测试**:探究如何通过递归调用或...

    poi大量数据读取gc内存溢出解决方案

    poi读取大量数据会造成gc内存溢出的报错,由于垃圾回收机制无法将大量的对象及时的回收,而这些对象又会保存在内存中,会导致内存不够用的情况,这时候我们就需要使用新的方法,读取为cvs即可.此解决方案可支持千万数据的...

    Java内存溢出问题

    Java内存溢出问题,是Java开发中常见的性能问题,它发生在程序运行时,由于系统无法分配足够的内存资源来满足程序的运行需求,导致程序异常终止。深入理解Java内存溢出,有助于我们优化程序,提高系统稳定性。下面...

    内存溢出及解决方案.docx

    ### 内存溢出及其解决方案 #### 一、内存溢出概述 内存溢出是指程序在运行过程中,因持续申请内存资源而导致系统无法满足其内存需求的现象。这通常发生在资源管理不当的情况下,例如未能及时释放不再使用的内存...

    Java内存溢出实现原因及解决方案

    "Java内存溢出实现原因及解决方案" Java内存溢出是一种常见的错误,可能导致Java应用程序崩溃或无法正常运行。下面将详细介绍Java内存溢出实现原因及解决方案。 JVM Heap溢出 JVM Heap溢出是指Java虚拟机(JVM)...

    JAVA内存溢出解决方案图解

    在了解了Java内存溢出的类型之后,针对不同类型的内存溢出,我们可以采取以下解决方案: - 增加堆内存大小:可以通过JVM参数-Xms(堆的最小值)和-Xmx(堆的最大值)来控制堆内存的大小,以适应应用程序的需求。...

    java异常解决方案.docx

    Java 异常是 Java 开发中经常遇到的问题,本文档将提供 Java 异常解决方案,涵盖 Hibernate、Tomcat、Java 基本、JSP、SSH 整合等多个方面的异常解决方案。 一、Hibernate 异常解决方案 * org.hibernate....

    java正则表达式例子

    此外,"JAVA内存溢出异常解决方案"讨论了Java内存管理,当程序使用过多内存时,了解如何排查和解决内存溢出问题是非常重要的。 总的来说,Java正则表达式是处理字符串的强大工具,理解其工作原理和用法对提升代码...

    解决OutOfMemoryError内存溢出

    ### 解决OutOfMemoryError内存溢出 在Java开发过程中,我们经常会遇到`java.lang.OutOfMemoryError`(简称OOM)的问题。这个问题的发生主要是由于JVM内存不足或程序中存在内存泄漏所引起的。本文将深入探讨OOM产生...

    jboss内存溢出原因

    在JBoss运行过程中,常见的内存溢出异常包括: 1. **PermGen Space(永久代)内存溢出**:当JVM的永久代空间不足时,会抛出`java.lang.OutOfMemoryError: PermGen space`异常。 2. **Heap Space(堆空间)内存溢出*...

    完美解决java读取大文件内存溢出的问题

    以上两种解决方案都可以完美解决java读取大文件内存溢出的问题。它们可以让我们遍历大文件,而不需要将整个文件读取到内存中,从而避免内存溢出。 在实际应用中,我们可以根据具体情况选择合适的解决方案。比如,...

    MyEclipse下tomcat日志输出和内存溢出解决方法.doc

    内存溢出(OutOfMemoryError)是由于Java虚拟机(JVM)无法分配足够的内存给新对象造成的异常。对于Tomcat服务器而言,内存溢出问题主要出现在两个方面:堆内存溢出和永久代内存溢出。 1. **堆内存溢出**:当应用...

    Tomcat内存溢出的解决方法(java.util.concurrent.ExecutionException)

    不过,解决这类问题通常需要结合具体的应用场景和日志信息进行调试,因此可能需要多次尝试和调整才能找到最佳解决方案。在实际操作中,记得备份当前的配置,并在测试环境中先进行调整,以避免对生产环境造成影响。

    java内存泄漏解决

    ### Java内存泄漏解决方案详解 #### 一、Java内存泄漏概述 在Java开发过程中,经常会遇到内存泄漏的问题,尤其是在长时间运行的应用程序中更为常见。本文将详细介绍如何解决Java内存泄漏问题,帮助开发者更好地...

Global site tag (gtag.js) - Google Analytics