Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [JAVA] java.lang.OutOfMemoryError: Java heap space

    Ciao a tutti...
    eseguendo il mio programma ricevo un'eccezione che non capisco e soprattutto che non so come risolvere.
    vi posto l'eccezione:
    codice:
    Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    	at java.util.Arrays.copyOf(Unknown Source)
    	at java.lang.AbstractStringBuilder.expandCapacity(Unknown Source)
    	at java.lang.AbstractStringBuilder.append(Unknown Source)
    	at java.lang.StringBuilder.append(Unknown Source)
    	at HTMLPage.<init>(HTMLPage.java:21)
    	at HTMLValidator.main(HTMLValidator.java:8)
    e il codice che la lancia:
    codice:
    	private String path;
    	private static StringBuilder document = new StringBuilder();
    
    public HTMLPage(String p) throws IOException, WrongExtensionException {
    		String[] path_a = p.split("\\.");
    		String ext = path_a[path_a.length-1];
    		int line_c = 0;
    		
    		if (!ext.equals("html") && !ext.equals("htm") && !ext.equals("php") && !ext.equals("asp"))
    			throw new WrongExtensionException(ext+" is not a valid extension for this program.");
    		else {
    			path = p;
    			BufferedReader in = new BufferedReader(new FileReader(p));
    			String linea = in.readLine();
    			System.out.println(document.capacity());
    			while(linea != null){
    				document.append(linea+" #%-"+(++line_c)+"!£&"); 
    			}
    		}
    	}
    La linea interessata è quella in rosso... l'altro file (HTMLValidator.java), alla riga indicata, semplicemente lancia questo costruttore.

    Qualcuno riuscirebbe ad aiutarmi?

    Grazie mille in anticipo
    Flash Developer for Rich Media
    PHP, jQuery Developer

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] java.lang.OutOfMemoryError: Java heap space

    Originariamente inviato da Miroku
    codice:
    			String linea = in.readLine();
    			System.out.println(document.capacity());
    			while(linea != null){
    				document.append(linea+" #%-"+(++line_c)+"!£&"); 
    			}
    Leggi una linea e se non è null entri nel ciclo. Ma dentro il ciclo, non fai altre letture e cioè non aggiorni 'linea'. Se era diverso da null tale da far entrare nel ciclo, beh, resta tale da far ciclare all'infinito. E visto che fai degli append, ad un certo punto .... boom!

    codice:
    while((linea = br.readLine()) != null) {
    .......
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    ops... a questo non ci avevo pensato
    grazie mille XD
    Flash Developer for Rich Media
    PHP, jQuery Developer

  4. #4
    non è facile come sembra questo tuo progetto mi pare...

  5. #5
    Eh no, le è riuscito proprio bene, prof. (anche se qualche parte, senza uno studio accurato del testo è un po' poco chiara)
    Flash Developer for Rich Media
    PHP, jQuery Developer

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.