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()
। গৃহীত উত্তরে প্রস্তাবিত না আপনি বিনামূল্যে মেমরির পরিমাণ দেওয়া