我做的是JAVA 画图软件,主要是加载背景图时,出的这个异常,但客户的图片很大,8M多,怎么解决,谢谢大家.

解决方案 »

  1.   

    java默认的情况下是设定的heapsize的,不同的vendor(例如sun,ibm,bea)的默认值各不同,但是都可以通过设置来实现。不知道你现在设置的是什么?但是你可以在启动参数中加 -Xms256M -Xmn256M -Xmx512M等来设置。例如你的程序已经打包为一个 graph.jar 那么就可以用java -jar -Xms256M -Xmn256M -Xmx512M graph.jar来运行,已得到更多的系统内存来支持你的应用。
      

  2.   

    楼上加我,我请教你,谢谢
    [email protected]
      

  3.   

    我是JAVA WEB START 怎么做呀,不通过命令行启动呀,怎么办
      

  4.   

    java.lang.OutOfMemoryError 这个应该我们用程序无法抓到吧,大家觉得呢,
      

  5.   

    可以在系统环境变量中设置jvm的启动内存,一般的服务器中使用的都是系统默认的。
    而且web服务器都是可以手动设置的启动内存的。
      

  6.   

    Error是捕获不到的,可以使用设置启动内存设置内存大小
      

  7.   

    我是JAVA WEB START启动,有没有人知道如何设置.
      

  8.   

    blog 更新:
     think in java 章后练习答案.....
     http://blog.csdn.net/heimaoxiaozi/
      

  9.   

    heimaoxiaozi(小木公子) ,你告诉我的是什么,我怎么找不到我的答案
      

  10.   

    tonyzhangcn(东尼),我通过你的方法从命令行启动已经有效果,但WEB START(或者别人直接点JAR直接运行) 如何才可以达到同样的效果,谢谢.大家有没有会的,帮个忙.
      

  11.   

    用-Xmx是可以提高vm的内存,不过内存溢出大多都是你自己程序写的有问题java也会内存泄漏的!我们编写百万级别用户访问程序都不会内存溢出,你写的程序肯定有问题,加大内存也许解决了你的问题,但是实际上面你的程序我估计不值得去加大内存就可以解决!好好看看你的程序吧
      

  12.   

    客户的图片多数是3-8MB的大图片,如果都是1MB左右的图片,一般还是没有问题,我知道,问题可能出在读入大图片的时候.但具体怎么修改,不知道,只要我把8MB的图片登录,就报这个错误.
      

  13.   

    <j2se version="1.4+" initial-heap-size="128m" max-heap-size="256m"/>
      

  14.   

    我的JDK如下:
    java version "1.6.0-beta2"
    Java(TM) SE Runtime Environment (build 1.6.0-beta2-b86)
    Java HotSpot(TM) Client VM (build 1.6.0-beta2-b86, mixed mode, sharing)第一步: 在命令行输入:javaws -viewer接着弹出“Java 控制面板”窗口,点“Java”选项卡,再点最上面那个“查看...”按钮
    然后会弹出“Java Runtime 设置”窗口,用鼠标点“Java Runtime 参数”下面的输入框
    在里面输入“-Xms256m -Xmx512m”之类的参数,然后按“确定”按钮就可以了。
    上面的方法不行的话,检查您的程序是否有问题,8M的图片不算大。另外的细节请查看javaws命令的详细参数,
    还有JDK的文档
    docs/technotes/tools/index.html#javaws
      

  15.   

    -----------------------
    http://blog.xerik.cn (专注于Java技术)
      

  16.   

    KRplusSRequalGOD(狂人+善人=神) 我的JDK1.4,WEB START VIEWER跟你说的不一样,可能版本不同吧,“Java Runtime 设置”窗口,用鼠标点“Java Runtime 参数”下面的输入框
    在里面输入“-Xms256m -Xmx512m”之类的参数,我找不到设置的地方.
      

  17.   

    上面有人已经说了解决方法了
    照 luanxj(じ飞扬) 说的方法,在jnlp里面设置。
      

  18.   

    要是您只是简单的用jar命令把所有的class文件打包成.jar文件,
    且生成的.jar文件中有“Main-Class”这一项,并且只是用鼠标
    双击生成的.jar文件来启动程序,这种方式严格来说不算是Java Web Start的。
    其实只是javaw的功能而已。如果是上面这种情况的话,写个批外理文件(.bat),在里面加上:
    java -jar -Xms128m -Xmx256M yourJAR.jar
    然后再双击批外理文件(.bat)就行了。正统的Java Web Start程序一般会有个.jnlp文件的,
    双击.jnlp文件就启动了Java Web Start 
    下面的例子就是改写自JDK1.4.2下的draw.jnlp文件<?xml version="1.0" encoding="utf-8"?>
    <jnlp spec="0.2 1.0"
          codebase="http://java.sun.com/products/javawebstart/apps"
          href="draw.jnlp">
       <information> 
          <title>Draw 4 App</title> 
          <vendor>Sun Microsystems, Inc.</vendor>
       </information>
       <resources>
          <j2se version="1.3+" initial-heap-size="128m" max-heap-size="256m" href="http://java.sun.com/products/autodl/j2se"/>
          <jar href="draw.jar" main="true" download="eager"/>
       </resources>
       <application-desc main-class="Draw"/>
    </jnlp> 上面的initial-heap-size="128m" max-heap-size="256m"
    就相当于-Xms128m -Xmx256M
    最后:JavaTM Web Start 1.4.2的文档在docs/guide/jws/index.html下面Java Network Launching Protocol and API (JNLP) Specification v1.0.1. 在下面
    http://java.sun.com/products/javawebstart/download-spec.html
    我第一次回答的只是applet(JavaTM Plug-in)的情况
    JavaTM Web Start跟applet有点不一样  
      

  19.   

    根据我的经验,Out of memory 98%以上是程序问题,而不是JVM启动参数问题
      

  20.   

    根据我的经验,Out of memory 98%以上是程序问题,而不是JVM启动参数问题
    -------------------------------------------------------------------
    同意,先找程序的漏洞
      

  21.   

    根据我的经验,Out of memory 98%以上是程序问题,而不是JVM启动参数问题
    -------------------------------------------------------------------
    同意,先找程序的漏洞
    =====================================================================
    经验和星星不能代表一切,有问题试了才知道就好比Java Web Start的默认初始heap-size不到6M而不断加载的图片有8M,
    要是最大heap-size也不到8M的话来个Out of memory也不足为怪
      

  22.   

    顶一个 jnlp 今天刚看到<?xml version="1.0" encoding="utf-8"?>
    <jnlp spec="0.2 1.0"
          codebase="http://java.sun.com/products/javawebstart/apps"
          href="draw.jnlp">
       <information> 
          <title>Draw 4 App</title> 
          <vendor>Sun Microsystems, Inc.</vendor>
       </information>
       <resources>
          <j2se version="1.3+" initial-heap-size="128m" max-heap-size="256m" href="http://java.sun.com/products/autodl/j2se"/>
          <jar href="draw.jar" main="true" download="eager"/>
       </resources>
       <application-desc main-class="Draw"/>
    </jnlp> 
      

  23.   

    可能存在内存泄露,用 jprofiler 详细分析一下你的程序运行时的资源分配情况,有助于定位你的内存泄露的位置
      

  24.   

    http://tieba.baidu.com/f?kz=969905427这里有答案