package org.semanticweb.HermiT.monitor; import org.semanticweb.HermiT.tableau.ReasoningTaskDescription; public class MemoryConsumptionMonitor extends CountingMonitor { private static final long serialVersionUID = -483824095933491230L; protected int m_binaryTableMem=0; // in KB protected int m_ternaryTableMem=0; // in KB protected int m_dependencySetsMem=0; // in KB protected int m_sumBinaryTableMem=0; // in KB protected int m_sumTernaryTableMem=0; // in KB protected int m_sumDependencySetsMem=0; // in KB protected int m_maxMem=0; // in KB protected int m_testNumber=0; public void isSatisfiableStarted(ReasoningTaskDescription reasoningTaskDescription) { super.isSatisfiableStarted(reasoningTaskDescription); m_testNumber++; } public void isSatisfiableFinished(ReasoningTaskDescription reasoningTaskDescription,boolean result) { super.isSatisfiableFinished(reasoningTaskDescription, result); m_binaryTableMem=m_tableau.getExtensionManager().getBinaryExtensionTable().sizeInMemory()/1024; m_ternaryTableMem=m_tableau.getExtensionManager().getTernaryExtensionTable().sizeInMemory()/1024; m_dependencySetsMem=m_tableau.getDependencySetFactory().sizeInMemory()/1024; m_sumBinaryTableMem+=m_binaryTableMem; m_sumTernaryTableMem+=m_ternaryTableMem; m_sumDependencySetsMem+=m_dependencySetsMem; int sum=m_binaryTableMem+m_ternaryTableMem+m_dependencySetsMem; if (sum>m_maxMem) m_maxMem=sum; } public void reset() { super.reset(); m_binaryTableMem=0; // in KB m_ternaryTableMem=0; // in KB m_dependencySetsMem=0; // in KB m_sumBinaryTableMem=0; // in KB m_sumTernaryTableMem=0; // in KB m_sumDependencySetsMem=0; // in KB m_maxMem=0; // in KB m_testNumber=0; } public long getCurrentTableauExpansionMemoryUse() { return m_binaryTableMem+m_ternaryTableMem+m_dependencySetsMem; } public long getCurrentTableauExpansionBinaryTableSize() { return m_binaryTableMem; } public long getCurrentTableauExpansionTernaryTableSize() { return m_ternaryTableMem; } public long getCurrentTableauExpansionDependencySetsSize() { return m_dependencySetsMem; } public long getAverageTableauExpansionMemoryUse() { if (m_testNumber==0) return 0; return (m_sumBinaryTableMem+m_sumTernaryTableMem+m_sumDependencySetsMem)/m_testNumber; } public long getAverageTableauExpansionBinaryTableSize() { if (m_testNumber==0) return 0; return m_sumBinaryTableMem/m_testNumber; } public long getAverageTableauExpansionTernaryTableSize() { if (m_testNumber==0) return 0; return m_sumTernaryTableMem/m_testNumber; } public long getAverageTableauExpansionDependencySetsSize() { if (m_testNumber==0) return 0; return m_sumDependencySetsMem/m_testNumber; } public long getMaxTableauExpansionMemoryUse() { return m_maxMem; } }