我正在使用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