German code too large

mcmanu

Active Member
Licensed User
Longtime User
Ich kann mein Programm nicht mehr Compilieren :(
der Compiler sagt --> code too large

Was kann ich machen? :sign0148:
 

hogiebaer

Active Member
Licensed User
Longtime User
Vermute einmal, dass Du eine Sub mit mehr wir 64KB Source hast.
Das sind Grenzen vom Java.

Wenn es so sein sollte, kannst Du ja versuchen, etwas zu optimieren, indem
Du mehrere Subs anstatt eine grosse bedienst.
 

mcmanu

Active Member
Licensed User
Longtime User
Danke

Okay danke schon mal, ja eine sub von mir ist sehr groß,
okay werds Probieren :/
Danke schonmal

Kann man die Grenze nicht höher setzten? ich mein 64 kb ist echt Mikrig :BangHead:
 

hogiebaer

Active Member
Licensed User
Longtime User
Nein leider nicht, da es an der Art der Adressierung liegt, die Android mit Java
verbindet. Und da haben die wohl praktischerweise die max. Segmentgrösse zwecks Adressierung von 64KB übernommen.

Das betrifft mit Sicherheit auch Datensegmente. Habs zwar noch nicht geschafft, ein solches Array zu generieren, aber ich vermute einmal, dass es auch dort diese Grenze gibt.

Gruss

Holger
 

mcmanu

Active Member
Licensed User
Longtime User
Danke

Okay Danke dir Für die Info :)
Des ist echt mies, weil meine activity create wird bald auch riesig sein weil ich alle screen sizes Realisieren muss :BangHead:
 

Jost aus Soest

Active Member
Licensed User
Longtime User
Des ist echt mies, weil meine activity create wird bald auch riesig sein

64 KB sind m. E. sehr viel und sollten für eine einzelne Sub mehr als ausreichend sein.
Zum Vergleich: Klassisches VB hat eine Begrenzung von 64 KB pro Modul, d. h. längere Code-Module führen - ohne jede Vorwarnung! - oft zu seltsamen Fehlermeldungen in der IDE. :D

Mein ernstgemeinter Tipp: In der strukturierten Programmierung ist es durchaus üblich, aus einer Sub heraus andere Subs aufzurufen... ;)

Als Faustregel gilt schließlich: Eine Sub sollte komplett auf eine Bildschirmseite passen.
Bei "trivialen" Subs darf es natürlich trotzdem auch mal länger werden, aber 64 KB? Das entspricht ca. 32 DIN A4-Seiten!
 

hogiebaer

Active Member
Licensed User
Longtime User
Okay Danke dir Für die Info :)
Des ist echt mies, weil meine activity create wird bald auch riesig sein weil ich alle screen sizes Realisieren muss :BangHead:

Aber wo liegt denn das Problem ?

Gerade in der Activity Create sollte m.E. Ordnung herrschen.
Wenn Du so viele verschiedene ScreenRes. handeln willst, dann geht das doch auch
wunderbar über eigens generierte Funktionen (subs).

SUB ACTIVITY_CREATE
Init_Screens
Init_Variablen
Init_WerweissWasSonstNoch
END SUB


Bei mir gibts es dafür standardmässig schon mal eine eigene Sub, die ich dann aus
der "Create" aufrufe ;)

Man kann JEDE Funktion soweit zerlegen, dass man sie wunderbar auf mehrere Subs auslagern kann.
 

mcmanu

Active Member
Licensed User
Longtime User
Danke

Danke dafür :)
Aber ich dachte es wäre nicht möglich views die man in der activity create
erstellt in andere subs auszulagern, also bei mir funktioniert das nicht, bringt immer eine fehlermeldung
 

klaus

Expert
Licensed User
Longtime User
Aber ich dachte es wäre nicht möglich views die man in der activity create erstellt in andere subs auszulagern, also bei mir funktioniert das nicht, bringt immer eine fehlermeldung.
Welche Fehlermeldung ?
Was meinst Du mit 'in der activity create erstellt' ?
Sind die Views in einer Layoutdatei oder im Code definiert ?
Wenn die Views in Sub Globals mit Dim definiert sind kannst Du sie überall im gleichen Activitymodul aufrufen und ändern.
Wenn die Views im Code in die Activity hinzugefügt wurden müssen sie initialisiert werden.

Beste Grüsse.
 

mcmanu

Active Member
Licensed User
Longtime User
Hi Klaus

Hat doch Funktioniert mit dem auslagern :)
wusste gar nicht das des so super funkioniert :)
habe sie im code erstellt und jede view wird initialisiert

Dazu hätte ich eine frage, hoffe es ist okay wenn ich die hier stelle :)
Gibt es eine Speicher begrenzung von Bitmaps die ich in der Activity lade?
Habe alle bitmaps mit loadbitmapsample versehen so das es "keine" outofmemory exception wirft. Jedoch stürzt meine app beim starten manchmal ab und bekomme den stack trace -->
bitmap size exceeds VM budget

Ich verwende jpg und png dateien, sind ungefähr 160, größte file hat
so in etwa 600 kb, viele andere aber nur unter 100 kb

Deshalb meine frage ob es eine grenze gibt die man in activity_create nicht überschreiten darf?
 

klaus

Expert
Licensed User
Longtime User
Du kannst folgende Threads anschauen:
How much memory available
Out of memory, recycle Bitmap
Der gebrauchte Speicherplatz für Bitmaps kann viel grösser sein als die Dateigrösse von jpg ode png Dateien denn intern sind die Bilder unkomprimiert gespeichert.

Beste Grüsse.
 

mcmanu

Active Member
Licensed User
Longtime User
Danke

Okay Danke euch beiden :)
Meine bilddateien haben insgesamt 5mb
Werd mir die Threads durchlesen :)

Edit: Ich habe gemerkt das jedes mal wenn ich die app mit der back taste schließe und die app erneut starte mein ram um 10mb steigt
Klar ist das es dann abstürzt irgentwann.

Habe nun bei activity_pause das hier
if userclosed=true then
exitapplication
end if

Jedoch frage ich mich ob das eine elegante lösung ist?
An den bitmaps lag es nicht
 
Last edited:
Top