Tamanho do vetor - falta de espaço?

Olá!
É minha primeira vez aqui, então me desculpem qualquer coisa :v

Estou aprendendo Java, e passei a última semana quebrando a cabeça para resolver um problema de números primos. Resolvi, e consegui um programa extremamente rápido, que era a grande dificuldade. Ele lê um número e escreve todos os primos existentes de 2 até o número, sendo o funcionamento interno acontecendo com um vetor de tamanho n + 1. O problema é que, pelo que parece, há um limite no número de posições que o vetor pode ter. Há como aumentar o tamanho máximo de um vetor? Quando dou a entrada 679000000 em diante, o seguinte erro é retornado, logo de início:

Exception in thread “main” java.lang.OutOfMemoryError: Java heap space

Tem como criar algo maior?

Por que precisa de um vetor tão grande?

OutOfMemoryError indica que você está usando toda a memória que o Java dispõe para criar objetos, o que indica algum problema claro com seu programa. Se a sua lógica depende de um vetor tão grande, sugiro alterá-la, pois mesmo que você ajuste a memória da jvm, irá esbarrar no mesmo problema com um vetor não muito maior.

Se puder mostrar seu código, poderíamos sugerir melhorias.

Abraço.

Olá!

Na verdade, não preciso. Já consigo chegar a valores bem grandes com esse código mas, quando vi que tinha um limite, fiquei bem curioso à respeito. Talvez, se alterar a JVM não ajude muito com o tamanho, eu possa tentar usar matrizes para conseguir rodar o código com números maiores.
O algoritmo é o seguinte:

import java.util.Scanner;
public class primos_novo {

	public static void main (String [] args) {
	
		Scanner sc = new Scanner (System.in);
		int n = sc.nextInt ();
		
		boolean crivo [] = new boolean [n];
		int posicao_relativa = 0;
		int j = 0;
		
		for (int i = 0; i < n; i++){
			crivo [i] = true;
		}
		
		for (int i = 2; i < n; i++){
			if (crivo [i] == true){
				System.out.println(i);
				
				j = 2;
				while (j < n){
					posicao_relativa = i * j;
					
					if (posicao_relativa < n){
						crivo [posicao_relativa] = false;
					}else{
						break;
					}
					j++;
				}
				
			}
		}
		
	
	}

}