相关疑难解决方法(0)


增加Java中的堆大小

我正在使用8 GB RAM的Windows 2003服务器(64位).如何增加堆内存最大值?我正在使用该-Xmx1500m标志将堆大小增加到1500 Mb.我可以将堆内存增加到物理内存的75%(6 GB堆)吗?

java heap-memory

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

java.lang.OutOfMemoryError:Java堆空间

我在执行多线程程序时遇到以下错误

java.lang.OutOfMemoryError: Java heap space
Run Code Online (Sandbox Code Playgroud)

上述错误发生在其中一个线程中.

  1. 据我所知,堆空间仅由实例变量占用.如果这是正确的,那么为什么在运行正常一段时间之后发生此错误,因为在创建对象时分配了实例变量的空间.

  2. 有没有办法增加堆空间?

  3. 我应该对我的程序进行哪些更改,以便它可以减少堆空间?

java multithreading heap-memory out-of-memory

94
推荐指数
7
解决办法
28万
查看次数

内存不足错误:Android Studio上的Java堆内存

java.lang.OutOfMemoryError: Java heap space编译Android项目时如何解决?

升级到Android Studio的第1版后,我得到了这个.但是,我不认为这是问题所在.最有可能的是,当我开始将我的应用程序升级到SDK 21时(之前是SDK 20).但我也不太确定.

我已经google了一些 修复,但找不到一个有效.大部分修复都适用于Eclipse IDE.

这是我在编译时得到的完整logcat错误:

warning: Ignoring InnerClasses attribute for an anonymous inner class
(net.lingala.zip4j.unzip.Unzip$1) that doesn't come with an
associated EnclosingMethod attribute. This class was probably produced by a
compiler that did not target the modern .class file format. The recommended
solution is to recompile the class from source, using an up-to-date compiler
and without specifying any "-target" type options. The consequence of ignoring
this warning is that reflective …
Run Code Online (Sandbox Code Playgroud)

java android android-studio

30
推荐指数
9
解决办法
5万
查看次数

如何在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堆空间

我试图在Java中使用非常大的方形矩阵,大约n = 1e6或更多.矩阵不是稀疏的,所以我没有看到很多方法将它们表示为2D数组,这需要n ^ 2*sizeof(int)位的内存.显然,即使添加编译器标志以用作我的机器允许的大堆,我也会遇到堆溢出错误.

我愿意为了这个问题而假设我拥有完美的计算机(无限制的RAM等),尽管实际上我在64位机器上有16 GB的RAM.似乎我的机器只是如此相关,因为我受JVM的限制而不是我的实际硬件(因为JVM不能拥有比我的物理机更多的内存).

我理解(并且引用,例如,在这里制作一个非常大的Java数组),Java阵列甚至在理论上也不能比用于索引的MAX_INT大.

我的问题是:有没有办法从JVM堆中哄骗额外的内存

据我所知,如果有,他们可能不会给我更多信息.

例如

在C中,我可以声明静态常量变量,并将它们移动到代码的数据部分,这将比堆有更多的空间,远远超过堆栈(存储的静态变量在哪里(在C/C++中)?) .

在Java中,似乎即使我将变量复制到"数据"部分,该值也会进入java中的主堆 静态分配 - 堆,堆栈和永久生成,这意味着我已成功移动一个完整的字节堆(耶!)

我的解决方案

我的"解决方案"并不是真正的解决方案.我创建了一个简单的数据结构,它使用RandomFileAccess io过程来替换对外部文件的读写的数组访问.它仍然是恒定时间访问,但我们从Java最快的操作之一转到非常非常慢的过程(尽管我们可以同时从文件中提取"缓存"行,这使得该过程非常快速).好主意?

不是我的问题

我不是问如何在java的最大数组大小之上创建一个数组.这是不可能的.这些是嵌套数组 - 单个n大小的数组很好,其中n个引起问题.

我不是问这个如何处理"java.lang.OutOfMemoryError:Java堆空间"错误(64MB堆大小).垃圾收集是不相关的 - 我甚至无法让阵列更加担心何时被删除.

我也不能使用迭代器(我认为),否则这将是一种可能性; 像矩阵乘法这样的函数需要能够直接索引

注意:Java不是在非常大的矩阵上进行操作的正确语言.我最好使用算盘.但我在这里,这是我无法控制的.

java memory-management

10
推荐指数
1
解决办法
570
查看次数

如何清除堆?

我正在研究相机应用程序.第一次,如果我捕获图像其工作正常,但如果我再次拍照,它会抛出一个错误

ERROR/dalvikvm-heap(2398):10077696字节的外部分配对于这个过程来说太大了."VM不会让我们分配10077696字节",最后是"05-02 05:35:38.390:ERROR/AndroidRuntime(2398):致命异常:主05-02 05:35:38.390:错误/ AndroidRuntime(2398):java.lang.OutOfMemoryError:位图大小超过VM预算

和应用程序强制关闭..如何处理这个如何清除堆和虚拟机?请帮忙..在此先感谢..

android

6
推荐指数
1
解决办法
7463
查看次数

将spark数据帧写入镶木地板格式时出现内存不足错误

我正在尝试从数据库中查询数据,对其进行一些转换,并在hdfs上以镶木地板格式保存新数据.

由于数据库查询返回大量行,因此我将批量获取数据并在每个传入的批处理上运行上述过程.

更新2:批处理逻辑是:

import scala.collection.JavaConverters._

import org.apache.spark.SparkContext
import org.apache.spark.sql.SQLContext
import org.apache.spark.sql.Row
import org.apache.spark.sql.types.{StructType, StructField, StringType}

class Batch(rows: List[String], 
            sqlContext: SQLContext) {

      // The actual schema has around 60 fields
      val schema = Array("name", "age", "address").map(field =>
                       StructField(field, StringType, true)
                   )

      val transformedRows = rows.map(rows => {

              // transformation logic (returns Array[Array[String]] type)

          }).map(row => Row.fromSeq(row.toSeq))

      val dataframe = sqlContext.createDataFrame(transformedRows.asJava, schema)

}

val sparkConf = new sparkConf().setAppName("Spark App")
val sparkContext = new SparkContext(sparkConf)
val sqlContext = new SQLContext(sparkContext)

// Code …
Run Code Online (Sandbox Code Playgroud)

java scala apache-spark parquet

6
推荐指数
1
解决办法
9943
查看次数

从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
查看次数

为什么这段代码会在线程“main”java.lang.OutOfMemoryError:Java堆空间中抛出异常?

import java.util.HashMap;\nimport java.util.HashSet;\n\npublic class ComputeIfAbsentWithHashSetNew {\n    public static void main(String[] args) {\n        var map = new HashMap<Integer, HashSet<Integer>>();\n        var data = new int[][]{{305589003, 4136}, {305589004, 4139}};\n        for (var entry : data) {\n            int x = entry[0];\n            int y = entry[1];\n//            map.computeIfAbsent(x, _x -> new HashSet<>()).add(y); // ----- line 1\n            var k = map.computeIfAbsent(x, HashSet::new);           // ----- line 2\n            k.add(y);\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

上面的代码抛出 jdk 17\xe3\x80\x81 18\xe3\x80\x81 19:

\n
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space\n    at java.base/java.util.HashMap.resize(HashMap.java:702)\n    at java.base/java.util.HashMap.putVal(HashMap.java:627)\n …
Run Code Online (Sandbox Code Playgroud)

java

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