2016-11-04 133 views
2

我在我的服務中遇到了一個stackoverflow錯誤,它附加到我的主要活動中。有沒有辦法在我的服務中更改堆棧大小?我遇到了Xss參數,但顯然它在vm選項(幫助 - >編輯vmoptions)中不可用。如何在Android應用程序中更改(線程的)堆棧大小?

有點背景: 當我嘗試讀取代碼中的序列化機器學習模型,然後反序列化它時,我收到錯誤。當這個模型建立在一個小的數據集上時,同樣的功能可以正常工作,但是當我使用更大的數據集建立同一個模型時,這個功能不起作用。

任何想法,我該怎麼做?

+0

我想你需要優化你的代碼之前問 – zombie

+0

@ zombie我反序列化「神經網絡分類器」這是建立了一個大數據集,所以我不認爲它必須對我的代碼優化做任何事情。 – utengr

+0

你試過android:largeHeap =「true」 – zombie

回答

2

你不能改變你的應用程序的堆棧大小,但是你可以創建一個新的線程,並使用此構造設置堆棧大小爲新線程:

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

反正一個新的線程一個好主意,你得到一個乾淨的堆棧。 Android主線程已經有大約10個條目屬於Dalvik和系統的其他部分...

+0

我不想改變整個應用程序的堆棧大小,但只有計時器線程我在用。我是TIMER TASK和定時器,用於在我的應用中定期執行任務。 – utengr

+0

您無法更改'Timer'使用的線程。因此,您需要第二個具有適當堆棧大小的線程,您可以從「TimerTask」觸發。 – Robert

+0

謝謝。我會試一試。 – utengr