You are not logged in.

mdietinger

Beginner

  • "mdietinger" is male
  • "mdietinger" started this thread

Posts: 2

Date of registration: Nov 28th 2008

Location: Vienna, Austria

  • Send private message

1

Monday, December 1st 2008, 11:03am

Heap memory

Hallo,

Ich habe eine VBA application welche relativ große Arrays anlegt. :whistling:

Wie kann man bei Jabaco den Verfügbaren Speicher vergrößern. (Bekomme eine Heap memory Fehlermeldung)

Auf alle Fälle bin ich beeindruckt was Du scheinbar im Alleingang hinbekommen hast.

Das Programm ist einsame Spitze. :thumbsup:



lg,

Markus

Manuel

Administrator

  • "Manuel" is male

Posts: 256

Date of registration: Jul 16th 2008

Location: Erlangen, Germany

Occupation: Software Developer

Hobbies: Jabaco, game theory, text-mining

  • Send private message

2

Monday, December 1st 2008, 8:45pm

> Wie kann man bei Jabaco den Verfügbaren Speicher vergrößern. (Bekomme eine Heap memory Fehlermeldung)

Momentan kannst du den Heap nicht selbst vergrößern. Aber das ist eine gute Idee für die nächste Version. Könntest du mir deine Sourcen, oder den relevanten Teil deiner Sourcen zukommen lassen?

mdietinger

Beginner

  • "mdietinger" is male
  • "mdietinger" started this thread

Posts: 2

Date of registration: Nov 28th 2008

Location: Vienna, Austria

  • Send private message

3

Tuesday, December 2nd 2008, 10:11am

> Wie kann man bei Jabaco den Verfügbaren Speicher vergrößern. (Bekomme eine Heap memory Fehlermeldung)

Momentan kannst du den Heap nicht selbst vergrößern. Aber das ist eine gute Idee für die nächste Version. Könntest du mir deine Sourcen, oder den relevanten Teil deiner Sourcen zukommen lassen?


Manuel,

hier ist ein Beispiel.

In VBA (Excel) kann ich dieses Feld z.B. bis zu einer größe von 5 Mio. Einträgen definieren. (und viele andere Variablen)

Kann schon mal vorkommen dass Excel im Speicher 600MB belegt :whistling: .

Also wenn Du die ermöglichst soviel Speicher wie möglich freizugeben dann ist es eine ernsthafte Überlegung Wert den Code zu portieren :thumbsup:



Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Const DB_Size = 10000000                   'DB Size 100.000 funktioniert, 1.000.000 oder 10.000.000 schon nicht mehr
Type Large_Type                            'Custom Type
        WERT_A(11) As Long
        WERT_B As Long                
End Type
Public DB_Large(DB_Size) As Large_Type      'DB einrichten
 
 
Public Sub main(ByJava args() As String)
   Dim myArgs() As String
   myArgs = args
   
   DB_Large(1).WERT_A(1) = 123456789        'zuweisen eines Wertes
End Sub

Manuel

Administrator

  • "Manuel" is male

Posts: 256

Date of registration: Jul 16th 2008

Location: Erlangen, Germany

Occupation: Software Developer

Hobbies: Jabaco, game theory, text-mining

  • Send private message

4

Tuesday, December 2nd 2008, 8:48pm

die größe vom heap kannst du zur laufzeit selbst definieren. das bringt dir aber leider nicht viel, weil du den jabaco-debugger momentan nicht selbst konfigurieren kannst. der befehl dafür wäre "java -Xmx1100m -cp [...]". damit legst du die maximale größe für deinen heap-speicher fest. in deinem fall berechnet sich die größe so: "10.000.000 * (12 * 8 Byte [=WERT_A] + 1 * 8 Byte [=WERT_B] + 2 * 4 Byte [=OBJEKTREFERENZ]) = ~ 1100 MByte". in vb6 ist der datentyp long 4 byte groß - in jabaco hat der datentyp 8 byte. deine größe von 600 mbyte wirst du in deiner vb6-version also bei etwa 10 mio elementen erreichen. vermutlich wirst du auch probleme mit der performance bekommen, aber ich überlege momentan das array-handling zu ändern. ein jabaco-array ist im jabaco-framework definiert. es besteht also die möglichkeit das noch sehr stark zu optimieren und dein problem damit zu lösen. allerdings würde ich an deiner stelle überlegen diese logik komplett zu ändern. durch jabaco hast du zugriff auf eine große auswahl von collections: http://java.sun.com/j2se/1.4.2/docs/guid…s/overview.html

jayess

Trainee

  • "jayess" is male

Posts: 65

Date of registration: Feb 17th 2010

  • Send private message

5

Friday, April 9th 2010, 10:23am

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

.

This post has been edited 2 times, last edit by "jayess" (Apr 9th 2010, 10:38am)


Rate this thread
WoltLab Burning Board