Speicherverwaltung in Java...

Janchu88

Kapitän zur See , HWLUXX Vize-Superstar
Thread Starter
Mitglied seit
29.11.2005
Beiträge
5.271
Ort
irgendwo im Nirvana...
Hi, hab schon des längeren ein kleines Prob...

Hab nen kleinen "Benchmark" in java gecodet... hier erstmal der quellcode:

Code:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.util.*;

public class Arithmethik extends Applet implements ActionListener
{

   Button start;
   Label zeit;


    public void init()
    {
     setLayout(null);

     start = new Button("Start");
     start.setBounds(100,50,200,50);
     start.addActionListener(this);
     add(start);
     
     zeit = new Label("");
     zeit.setBounds(100,150,200,50);
     zeit.setBackground(new Color(255,255,100));
     add(zeit);
     

    }
    
    private void startKlick()
    {
      double zahl[];
      zahl = new double[7000000];
      long t1,t2,tges;
      String tstr;
    
      t1 = System.currentTimeMillis();
    
      for(int i = 0;i<7000000;i++)
      {
      zahl[i] = 200000000.0 * Math.pow(0.9999999999999,i);
      }

      t2 = System.currentTimeMillis();
      
      tges = t2 - t1;
      tstr = Long.toString(tges);
      zeit.setText(tstr+ "ms");
      
      

    
    }
    
    public void actionPerformed(ActionEvent e)
    {
       Object quelle;
       quelle = e.getSource();
       if(quelle.equals(start))
       {
       startKlick();
       }

    }

}

So, nun hab ich aber das Problem das ich mein Array nicht gross genug bekomme... der eigentliche benchmark besteht aus mehreren Benchmark Modulen... unter anderem soll dieser Array Benchmark mit geometrischer Folge schön Speicherlastig sein, da er für millionen von Variablen im Array Platz reserviert und dann verrechnet.. hinterher sollen die Variablen noch mit anderen Arrays verrechnet werden etc... aber hier ist halt ne verinfachte Version um das Problem klar zu machen. Allerdings krieg ich bei mehr als 7.000.000 Variablen einen Error das der Java Heap voll ist:

Code:
Exception in thread "AWT-EventQueue-1" java.lang.OutOfMemoryError: Java heap space
 at Arithmethik.startKlick(Arithmethik.java:33)
 at Arithmethik.actionPerformed(Arithmethik.java:61)
 at java.awt.Button.processActionEvent(Button.java:392)
 at java.awt.Button.processEvent(Button.java:360)
 at java.awt.Component.dispatchEventImpl(Component.java:4410)
 at java.awt.Component.dispatchEvent(Component.java:4240)
 at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
 at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
 at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
 at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
 at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
 at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
 at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

Was kann man da gegen tun?
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Jo das Array ist irgendwann voll dann geht nichts mehr. Bau ne eigene Datenstruktur, ne Liste zB.
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh