2016-11-04 3 views
2

Ich bekomme einen Stackoverflow-Fehler in meinem Service, der an meine Hauptaktivität angehängt ist. Gibt es eine Möglichkeit, die Stapelgröße in meinem Service zu ändern? Ich stieß jedoch auf den Xss-Parameter, anscheinend ist er nicht in den vm-Optionen verfügbar (Hilfe-> Edit vmoptions).Wie kann ich die Stapelgröße (eines Threads) in meiner Android-Anwendung ändern?

Ein wenig Hintergrund: Ich erhalte die Fehlermeldung, wenn ich versuche, ein serialisierte Maschine Lernmodell in Code zu lesen und dann deserialisieren es. Die gleiche Funktion funktioniert gut, wenn dieses Modell auf einem kleinen Dataset erstellt wird, funktioniert aber nicht, wenn ich das gleiche Modell mit einem größeren Daatset erstellt habe.

Irgendwelche Ideen, wie kann ich es tun?

+0

Ich denke, dass Sie Ihren Code optimieren müssen, bevor Sie fragen – zombie

+0

@zombie Ich bin deserializing "Neural Network Classifier", die ist Ich habe einen großen Datensatz erstellt, daher glaube ich nicht, dass er irgendetwas mit meiner Code-Optimierung zu tun hat. – utengr

+0

haben Sie versucht, Android: largeHeap = "true" – zombie

Antwort

2

Sie können nicht die Stapelgröße der App ändern, aber können Sie einen neuen Thread erstellen und die Stapelgröße für neuen Thread setzen Sie diesen Konstruktor:

Konstruktor Thread (ThreadGroup group, Runnable target, String name, long stackSize)

Auf jeden Fall ein neuer Thread ist eine gute Idee, wenn Sie einen sauberen Stapel bekommen. Der Android-Hauptthread hat bereits etwa 10 Einträge, die zu Dalvik und anderen Teilen des Systems gehören ...

+0

Ich möchte nicht die Stack-Größe der ganzen App ändern, sondern nur den Timer-Thread, der Ich benutze. Ich bin TIMER TASK und Timer für eine periodische Aufgabe in meiner App. – utengr

+0

Sie können den von 'Timer' verwendeten Thread nicht ändern. Daher benötigen Sie einen zweiten Thread mit angepasster Stackgröße, den Sie mit Ihrer 'TimerTask' auslösen können. – Robert

+0

danke. Ich werde es versuchen. – utengr

Verwandte Themen