首页 > 解决方案 > MEMORY_LIMIT_EXCEEDED 错误,我用什么代替数组?

问题描述

我是内存分配的新手,所以我创建了一个不通过基于大数字的测试的代码,因为最大堆栈内存设置为 256mb:

java.lang.OutOfMemoryError: Java heap space

at kdiv.main(kdiv.java:35)

我的代码:

import java.io.*;
import java.util.*;

public class kdiv {

    public static void main(String[] args) {
        
        int sum = 0;
        int minmax = 1;
        Scanner sc = new Scanner(System.in);
        int testcs = 0;
        if (sc.hasNextInt()) {
            testcs = sc.nextInt();
        }

        for (int x = 1; x <= testcs; x++) {
            // testCase();
            // TODO Auto-generated method stub
            int n = 0;
            double k = 0;
//      System.out.print("n: ");
            if (sc.hasNextInt()) {
                n = sc.nextInt();
            }

//      System.out.print("k: ");
            if (sc.hasNextInt()) {
                k = sc.nextInt();
            }

            minmax = 1;
            sum = 0;

            int arr[] = new int[n];

            for (int i = 0; i < arr.length; i++) {
                arr[i] = 1;
                sum += arr[i];
            }

            for (int a = 0; a < k; a++) {
                if (sum % k == 0) {
                    if (a == 0) {
                        System.out.println(minmax);
                    }
                    break;
                }
                for (int b = 0; b < n; b++) {
                    arr[b]++;
                    sum++;
                    minmax = arr[b];
                    // System.out.println(Arrays.toString(arr));
                    if (sum % k == 0) {
                        System.out.println(minmax);
                        break;
                    }
                }
            }
        }
    }
}

错误信息图片

这是一个微不足道的问题,我知道,但我不知道如何处理。谁能至少建议我在哪里学习内存分配以便我能理解这件事?因为我被困住了。祝你今天过得愉快。

标签: javamemory

解决方案


您是否正在寻找增加 JVM 内存分配的方法?如果是这样,可以在这里找到:

启动JVM时-Xms和-Xmx参数是什么?


推荐阅读