相关疑难解决方法(0)

捕获java.lang.OutOfMemoryError?

文档java.lang.Error说:

Error是Throwable的子类,表示合理的应用程序不应该尝试捕获的严重问题

但是作为java.lang.Error子类java.lang.Throwable,我可以捕获这种类型的Throwable.

我明白为什么抓住这种例外不是一个好主意.据我所知,如果我们决定捕获它,catch处理程序不应该自己分配任何内存.否则OutOfMemoryError将再次抛出.

所以,我的问题是:

  1. 捕获时是否有任何真实的单词场景java.lang.OutOfMemoryError可能是一个好主意?
  2. 如果我们决定捕获java.lang.OutOfMemoryError,我们怎么能确定catch处理程序本身不分配任何内存(任何工具或最佳实践)?

java try-catch out-of-memory

97
推荐指数
8
解决办法
8万
查看次数

JVM是否可以在不重新启动的情况下从OutOfMemoryError中恢复

  1. 如果有更多对象分配请求进入之前有机会运行GC,JVM是否可以在不重启的情况下从OutOfMemoryError中恢复?

  2. 各个JVM实现在这方面有所不同吗?

我的问题是关于JVM恢复而不是用户程序试图通过捕获错误来恢复.换句话说,如果在应用程序服务器(jboss/websphere/..)中抛出OOME,我是否必须重新启动它?或者,如果进一步的请求似乎没有问题,我可以让它运行.

java jvm out-of-memory

43
推荐指数
1
解决办法
2万
查看次数

无抛出VirtualMachineError保证

我是从C++来的Java.在C++世界中,我们注意异常安全,并注意,mutator可以在mutator本身抛出的异常或它委托给它的方法(最小,强,无抛出)时提供不同的保证.实现具有强异常保证的方法需要保证一些基本操作永远不会抛出异常.JLS声明哪些操作可以抛出哪种异常,但VirtualMachineError错误会带来问题.答曰JLS:

内部错误或资源限制阻止Java虚拟机实现Java编程语言的语义; 在这种情况下,VirtualMachineError抛出一个子类的实例 .

JLS没有再说了VirtualMachineError."内部错误"意味着JVM中的一个错误,所以我对这种情况不感兴趣:面对JVM中的错误,所有的赌注都是关闭的.但是那个"资源限制"案例呢?是否存在因资源限制而保证永不失败的操作?

java jvm correctness exception

14
推荐指数
1
解决办法
4756
查看次数

如何在Java中处理OutOfMemoryError?

我必须序列化大约一百万个项目,当我运行我的代码时,我得到以下异常:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOfRange(Unknown Source)
    at java.lang.String.<init>(Unknown Source)
    at java.io.BufferedReader.readLine(Unknown Source)
    at java.io.BufferedReader.readLine(Unknown Source)
    at org.girs.TopicParser.dump(TopicParser.java:23)
    at org.girs.TopicParser.main(TopicParser.java:59)
Run Code Online (Sandbox Code Playgroud)

我该如何处理?

java memory-management

12
推荐指数
6
解决办法
6万
查看次数

在Java中,当对象无法实例化时会发生什么?

我来自c ++背景,我发现自己经常在java中这样做:

SomeClass sc=new SomeClass();

if(null!=sc)
{
    sc.doSomething();
}
Run Code Online (Sandbox Code Playgroud)

我想知道的是,如果构造函数由于某种原因(例如可能没有足够的内存)而失败,那么变量sc中会出现什么.我找不到一个直接的答案,我担心我只是在浪费时间,因为如果新的操作员失败,程序会崩溃吗?

java creation object instantiation new-operator

9
推荐指数
2
解决办法
5512
查看次数

为什么没有OutOfMemoryError子类?

众所周知,有多种原因OutOfMEmoryError(见第一个答案).为什么只有一个例外情况涵盖了所有这些情况而不是继承的多个细粒度情况OutOfMEmoryError

UML

java exception out-of-memory subclassing

6
推荐指数
3
解决办法
538
查看次数

在内存不足之前做一些事情

有没有办法让Java在内存不足之前做一些事情.例如,保留先前文档状态列表(用于撤消)并仅在内存即将耗尽时删除非常旧的状态?

java memory memory-management

5
推荐指数
1
解决办法
203
查看次数

当系统运行OutOfMenory时,Activity的public void onLowMemory()方法不会被android框架调用

我从大图像创建位图drawables,并在那时发生OutOfMemory错误.应该调用Activity.onLowMemory()方法,但实际上它不是由框架调用的.

有没有任何解决方案,还是有任何其他方法来捕获Android中的OutOfMemory错误?

android

5
推荐指数
1
解决办法
6251
查看次数

有没有办法处理Java堆空间异常

我正在寻找将文件输入流转换为大文件(文件大小为 100MB)并且它正在抛出和 java.lang.OutOfMemoryError : Java Heap space

import java.io.FileInputStream; import java.io.IOException;

import org.apache.commons.io.IOUtils;

public class TestClass {
    public static void main(String args[]) throws IOException
    {
        //Open the input and out files for the streams
        FileInputStream fileInputStream = new FileInputStream("file.pdf");
        IOUtils.toByteArray(fileInputStream);
    } 
}
Run Code Online (Sandbox Code Playgroud)

实际的堆栈跟踪是

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at org.apache.commons.io.output.ByteArrayOutputStream.toByteArray(ByteArrayOutputStream.java:322)
    at org.apache.commons.io.IOUtils.toByteArray(IOUtils.java:463)
    at TestClass.main(TestClass.java:12)
Run Code Online (Sandbox Code Playgroud)

我确实尝试使用以下方法处理它

public static byte[] toByteArray(InputStream is) {
        if (is == null) {
            throw new NullPointerException("The InputStream parameter is null.");
        }

        ByteArrayOutputStream baos = …
Run Code Online (Sandbox Code Playgroud)

java heap exception

5
推荐指数
1
解决办法
5317
查看次数

从java.lang.OutOfMemoryError中恢复

所以今天在学习Java时,我终于遇到了这个特殊错误.似乎这个错误非常普遍,并试图从中恢复已经获得了混合反应.有些人认为它在某些情况下是有用的,因此它是一个很好的"知道",有些人在他们的项目中使用它,而另一些则强烈反对 捕获这个错误的想法,然后很多其他人就像我一样困惑.

编辑:哦顺便说一句,这是我遇到的错误.我希望捕获这些错误并将增量值的值减少1/10,直到找到另一个错误
(依此类推......直到我找到上限) 这是我遇到的错误

由于我在Java中采取了我的步骤,并且在这个主题上找不到任何具体的内容,我想请求您提供有关此特定示例的帮助:

public class SpeedDemoClass {
        static int iterations=0;
        static int incrementor=10000000;
    public static void main(String[] args) {
        while(incrementor>1){
            try{
              iterations=iterations+incrementor;
              iterator(iterations);
            }
            catch(Exception e){
                System.out.println("So this is the limiting error: "+e);
                iterations=iterations-incrementor;
                incrementor=incrementor/10;
                iterations=iterations+incrementor;
            }
        }
        System.out.println("The upper limit of iterations is: "+iterations);
    }

    public static void iterator(int a){
            long start_time= System.currentTimeMillis();
            StringBuilder sbuild= new StringBuilder("JAVA");
            for(int i=0;i<a;i++){
                sbuild.append("JAVA");
            }
            System.out.println("Performing "+a+" append operations;"
                    +"process completed …
Run Code Online (Sandbox Code Playgroud)

java out-of-memory

5
推荐指数
0
解决办法
606
查看次数


Java - 如何处理OutOfMemoryError?

我正在创建一个应用程序,用户可能会得到一个OutOfMemoryError; 现在我想找到一种方法,可以通知用户程序遇到OutOfMemoryError,这样他/她就可以采取相应的行动.(例如,使用更大的堆空间重新启动程序等)

如何"捕获"错误,以便我可以通知用户?

java error-handling exception out-of-memory

0
推荐指数
1
解决办法
652
查看次数

什么是OutOfMemoryError异常,我该如何生成它?

对于涉及异常处理的家庭作业练习,我需要生成一个OutOfMemoryError异常,这样我就可以编写一个try-catch并捕获它:

"13.10(OutOfMemoryError)编写一个程序,使JVM抛出OutOfMemoryError并捕获并处理此错误."

我搜索了Java API,但在异常列表中的OutOfMemoryError异常中找不到任何内容.什么是OutOfMemoryError异常,如何为我的作业生成一个异常?

java exception-handling exception

0
推荐指数
1
解决办法
2091
查看次数