我正在使用JProfiler來解決我的基於swing的桌面應用程序的內存問題。在JProfiler的Memory視圖中,我看到40K實例的一個類和使用3MB的內存。如何釋放類實例和內存?
DefaultTableModel summaryModel = null;
void insertEnv(final Map<String, String> configMap,final String variable,final String value)
{
this.configMap = configMap;
Runnable runnable = new Runnable()
{
public void run()
{
Vector dataVector = summaryModel.getDataVector();
for(int row = 0; dataVector != null && row < dataVector.size(); row++)
{
Vector rowData = (Vector)dataVector.get(row);
if(rowData.get(0).toString().equals(variable))
{
summaryModel.removeRow(row);
}
}
Object[] row = new Object[] {variable, value };
summaryModel.addRow(row);
}
};
SwingUtilities.invokeLater(runnable);
}
在insertEnv()函數中,我在JTable中添加了新行。這個函數被稱爲40K倍,因此被稱爲40K以上的類。可以做些什麼來釋放內存和實例數量?
你在說什麼課? – BetaRide
你確定實際上有內存問題?首先, 3MB內存對於Java應用程序來說沒有任何意義,你能否證實40k對象最終不會被垃圾回收?從你展示的源代碼中,這些可運行內容似乎沒有任何東西會導致它們永遠停留在他們自己並沒有獲取大量的數據JProfiler可以顯示你的內存統計信息,只有「活的」對象,我相信,這是否包括他們? – Thilo
是的,我第二@Thilo,3MB是沒有。 – Cosmin