1. 程式人生 > >解決jacob呼叫word處理doc檔案的記憶體溢位問題

解決jacob呼叫word處理doc檔案的記憶體溢位問題

背景:

有個專案在系統後臺用Jacob呼叫Word程序的API做doc檔案處理。在進行壓力測試的時候,發現執行一段時間後,記憶體佔用奇高,大約7.4G。由於JVM佔用記憶體限制為2G,因此懷疑多出來的記憶體應當是Jacob洩露的。

在網路上搜索解決辦法,都是要這樣呼叫

ComThread.InitSTA();

// do something

ComThread.Release();

但是在專案中,使用了執行緒池進行DOC檔案處理,也就是同一時間,會有多個WORD程序在跑,使用ComThread.InitSTA();之後,Jacob僅允許執行緒池裡面的一個執行緒執行,其他執行緒都被鎖住。

最後修改成ComThread.InitMTA(true);來初始化,經過24小時壓力測試,可以同時有多個WORD程序執行,另外也解決了Jacob記憶體溢位問題。