Предложение от Michael L. Creech)
Некоторую информацию о системной памяти можно заполучить из класса lang.Runtime .
Вот небольшое приложение, которое печатает количесво свободной и доступной памяти . Однако количество свободной памяти - приблизительно. Я верю, что если запустить сборщик мусора (gc()) до вызова 'freeMemory()', то будут более достоверные результаты.
import java.applet.*; // we use Applet
import java.awt.*; // we use Graphics
public class MemoryStats
{
public static void main (String args[])
{
Runtime rt = Runtime.getRuntime ();
rt.gc (); // Необязательный шаг, но будет больше достоверность, может быть
long freeMem = rt.freeMemory (); // Не всегда точно, но приблизительно
long totalMem = rt.totalMemory ();
System.out.println ("Total Memory Available = " + totalMem);
System.out.println ("Free Memory Available = " + freeMem);
}
}
Предложение от Steve Alexander
Проверка доступной памяти на клиентской системе, может быть выполена при использовании классаe Runtime, предоставлябщено основную информацию об окружении VM частного пользователя.
Это простое приложение использует несколько методов класса Runtime (getRuntime(), freeMemory, totalMemory и сборщик мусора (gc()) для вывода до и после работы сборщика.
import java.awt.*;
import java.lang.Thread;
import java.lang.Runtime;
import java.io.IOException;
public class ExecDemo extends Frame
{
public String textString;
Runtime rt;
long freeMem, freeMem2, totalMem, totalMem2;
public static void main(String args[])
{
ExecDemo m = new ExecDemo("Test");
Button clearMem = new Button("Run Garbage Collector");
m.add("South", clearMem);
m.start();
}
public void start()
{
resize(400,125);
rt = Runtime.getRuntime();
show();
freeMem = rt.freeMemory();
totalMem = rt.totalMemory();
}
public ExecDemo(String s)
{
super("VM Memory Example");
}
public void paint(Graphics g)
{
g.drawString("Free memory (pre-GC) = ", 15, 20);
g.drawString(Long.toString(freeMem), 150, 20);
g.drawString("Total memory (pre-GC) =", 15, 35);
g.drawString(Long.toString(totalMem), 150, 35);
g.drawString("Free memory (post-GC) = ", 15, 50);
g.drawString(Long.toString(freeMem2), 150, 50);
g.drawString("Total memory (post-GC) =", 15, 65);
g.drawString(Long.toString(totalMem2), 150, 65);
g.setColor(Color.blue);
g.drawString("All memory in bytes", 15, 80);
}
public boolean handleEvent(Event e)
{
if(e.target instanceof Button)
{
String label = ((Button)e.target).getLabel();
if(label.equals("Run Garbage Collector"))
{
//System.gc();
rt.gc();
freeMem2 = rt.freeMemory();
totalMem2 = rt.totalMemory();
repaint();
return true;
}
}
return false;
}
}
Некоторую информацию о системной памяти можно заполучить из класса lang.Runtime .
Вот небольшое приложение, которое печатает количесво свободной и доступной памяти . Однако количество свободной памяти - приблизительно. Я верю, что если запустить сборщик мусора (gc()) до вызова 'freeMemory()', то будут более достоверные результаты.
import java.applet.*; // we use Applet
import java.awt.*; // we use Graphics
public class MemoryStats
{
public static void main (String args[])
{
Runtime rt = Runtime.getRuntime ();
rt.gc (); // Необязательный шаг, но будет больше достоверность, может быть
long freeMem = rt.freeMemory (); // Не всегда точно, но приблизительно
long totalMem = rt.totalMemory ();
System.out.println ("Total Memory Available = " + totalMem);
System.out.println ("Free Memory Available = " + freeMem);
}
}
Предложение от Steve Alexander
Проверка доступной памяти на клиентской системе, может быть выполена при использовании классаe Runtime, предоставлябщено основную информацию об окружении VM частного пользователя.
Это простое приложение использует несколько методов класса Runtime (getRuntime(), freeMemory, totalMemory и сборщик мусора (gc()) для вывода до и после работы сборщика.
import java.awt.*;
import java.lang.Thread;
import java.lang.Runtime;
import java.io.IOException;
public class ExecDemo extends Frame
{
public String textString;
Runtime rt;
long freeMem, freeMem2, totalMem, totalMem2;
public static void main(String args[])
{
ExecDemo m = new ExecDemo("Test");
Button clearMem = new Button("Run Garbage Collector");
m.add("South", clearMem);
m.start();
}
public void start()
{
resize(400,125);
rt = Runtime.getRuntime();
show();
freeMem = rt.freeMemory();
totalMem = rt.totalMemory();
}
public ExecDemo(String s)
{
super("VM Memory Example");
}
public void paint(Graphics g)
{
g.drawString("Free memory (pre-GC) = ", 15, 20);
g.drawString(Long.toString(freeMem), 150, 20);
g.drawString("Total memory (pre-GC) =", 15, 35);
g.drawString(Long.toString(totalMem), 150, 35);
g.drawString("Free memory (post-GC) = ", 15, 50);
g.drawString(Long.toString(freeMem2), 150, 50);
g.drawString("Total memory (post-GC) =", 15, 65);
g.drawString(Long.toString(totalMem2), 150, 65);
g.setColor(Color.blue);
g.drawString("All memory in bytes", 15, 80);
}
public boolean handleEvent(Event e)
{
if(e.target instanceof Button)
{
String label = ((Button)e.target).getLabel();
if(label.equals("Run Garbage Collector"))
{
//System.gc();
rt.gc();
freeMem2 = rt.freeMemory();
totalMem2 = rt.totalMemory();
repaint();
return true;
}
}
return false;
}
}