Java.lang.management पैकेज आप क्रम से और भी बहुत कुछ जानकारी देता है - उदाहरण के लिए यह आप ढेर स्मृति दे देंगे ( ManagementFactory.getMemoryMXBean().getHeapMemoryUsage()
) गैर ढेर स्मृति से अलग ( ManagementFactory.getMemoryMXBean().getNonHeapMemoryUsage()
)।
आप सीपीयू उपयोग की प्रक्रिया भी प्राप्त कर सकते हैं (अपना जेएनआई कोड लिखे बिना), लेकिन आपको java.lang.management.OperatingSystemMXBean
एक कास्ट करने की आवश्यकता है com.sun.management.OperatingSystemMXBean
। यह विंडोज और लिनक्स पर काम करता है, मैंने इसे कहीं और परीक्षण नहीं किया है।
उदाहरण के लिए ... अधिक सटीक रीडिंग प्राप्त करने के लिए getCpuUsage () विधि को अधिक बार कॉल करें।
public class PerformanceMonitor {
private int availableProcessors = getOperatingSystemMXBean().getAvailableProcessors();
private long lastSystemTime = 0;
private long lastProcessCpuTime = 0;
public synchronized double getCpuUsage()
{
if ( lastSystemTime == 0 )
{
baselineCounters();
return;
}
long systemTime = System.nanoTime();
long processCpuTime = 0;
if ( getOperatingSystemMXBean() instanceof OperatingSystemMXBean )
{
processCpuTime = ( (OperatingSystemMXBean) getOperatingSystemMXBean() ).getProcessCpuTime();
}
double cpuUsage = (double) ( processCpuTime - lastProcessCpuTime ) / ( systemTime - lastSystemTime );
lastSystemTime = systemTime;
lastProcessCpuTime = processCpuTime;
return cpuUsage / availableProcessors;
}
private void baselineCounters()
{
lastSystemTime = System.nanoTime();
if ( getOperatingSystemMXBean() instanceof OperatingSystemMXBean )
{
lastProcessCpuTime = ( (OperatingSystemMXBean) getOperatingSystemMXBean() ).getProcessCpuTime();
}
}
}
Runtime.getRuntime().freeMemory()
जैसा कि स्वीकृत उत्तर में सुझाया गया है, आपको मुफ्त मेमोरी की राशि नहीं दी गई है।