Janchu88
Kapitän zur See , HWLUXX Vize-Superstar
Hi, hab schon des längeren ein kleines Prob...
Hab nen kleinen "Benchmark" in java gecodet... hier erstmal der quellcode:
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:
Was kann man da gegen tun?
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?