Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

Rechner hängt sich bei Ausführung meines Java-Programms auf

MeisterPropper / 5 Antworten / Flachansicht Nickles

Habe ein Programm geschrieben, daß in 2 Teile gegliedert werden kann.
Der erste Teil ist eine GUI. Von der GUI wird der 2. Teil (Rechenteil) aufgerufen.

Rufe ich das Rechenprogramm über GUI auf, hängt mein Rechner sich auf.
Wenn ich aber das Rechenprogramm über eine eigene Main-Methode starte,
gibt es keine Probleme.

Zusatzinfo: Alle Klassen sind erfolgreich kompiliert. Im Berechnungsprogramm wird eine große Menge von Arrays verwendet.

Kann es sein, daß die Java-Virtuelle-Maschine nicht über genügend Speicherplatz für meine Vielzahl von Arrays verfügt? Wie kann ich diesen maximieren? Oder gibt es bessere Lösungen?

bei Antwort benachrichtigen
MeisterPropper Nachtrag zu: „Rechner hängt sich bei Ausführung meines Java-Programms auf“
Optionen

// Das ist die GUI-Klasse
// Über einen JFileChooser kann man eine Datei auswählen.

public class Netz3D extends JFrame
{

public Netz3D (String title)
{
setTitle(title);
init();
}

...

public void init()
{
...
}

// Wenn ich den Button klicke, wird FillArrays aufgerufen,
// wobei der Dateiname (infile) weitergegeben wird

public void AusgleichenActionPerformed (ActionEvent evt)
{
FillArrays fa = new FillArrays(anzKoord, anzBeob, anzGruppen,
Pfad, infile, outfile);
}

...

public static void main (String[] args)
{
try
{
UIManager.setLookAndFeel
(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e)
{
e.printStackTrace();
}

new Netz3D("Netz3D-Programm");
}
}



// Diese Klasse liest mit BufferedReader Daten aus dem infile und
// schreibt sie in die Arrays

public class FillArrays
{
public FillArrays(int anzKoord,
int anzBeob,
int anzGruppen,
String Pfad,
String infile,
String outfile)
{
// Hier werden die Arrays mit Hilfe bestimmter Methoden gefüllt.
...

// Wenn die Arrays gefüllt sind, wird von hier die Rechen-
// Klasse aufgerufen

Ausgleich agl = new Ausgleich(nahkoor, beob, GruppeWerte,
beobinfo, Unbekannte, GruppeInfo,
PktInfo, alpha, sapri, u,
Ellipsoid, Koordsys, outfile);
}



// Ausgleich.java ist die Berechnungsklasse. Hier wird wie schon
// erwähnt mit vielen und
// vor allem großen Arrays gerechnet.


public class Ausgleich
{
public Ausgleich(double[][] nahkoor,
double[][] beob,
double[][] GruppeWerte,
int[][] beobinfo,
int[][] Unbekannte,
String[][] GruppeInfo,
int[] PktInfo,
double alpha,
double sapri,
int u,
String Ellipsoid,
String Koordsys,
String dateiname)
{
...

}


// Vielleicht hilft es dir (bzw. mir). Oder verwirrt dich das?
// nochmal zur Info: Die Arrays in der Berechnungsklasse haben
// insgesamt 175431 Felder

bei Antwort benachrichtigen