java 如何实现即时监控内存在 \jdk1.6.0_10\demo\management\MemoryMonitor 下得示例程序,可以去学习哈
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import java.util.Date;
import javax.swing.*;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import java.lang.management.*;
import java.util.*;
public class MemoryMonitor extends JPanel {
static JCheckBox dateStampCB = new JCheckBox("Output Date Stamp");
public Surface surf;
JPanel controls;
boolean doControls;
JTextField tf;
// Get memory pools.
static java.util.ListMemoryPoolMXBean mpools =
ManagementFactory.getMemoryPoolMXBeans();
// Total number of memory pools.
static int numPools = mpools.size();
public MemoryMonitor() {
setLayout(new BorderLayout());
setBorder(new TitledBorder(new EtchedBorder(), "Memory Monitor"));
add(surf = new Surface());
controls = new JPanel();
controls.setPreferredSize(new Dimension(135,80));
Font font = new Font("serif", Font.PLAIN, 10);
JLabel label = new JLabel("Sample Rate");
label.setFont(font);
label.setForeground(Color.red);
controls.add(label);
tf = new JTextField("1000");
tf.setPreferredSize(new Dimension(45,20));
controls.add(tf);
controls.add(label = new JLabel("ms"));
label.setFont(font);
label.setForeground(Color.red);
controls.add(dateStampCB);
dateStampCB.setFont(font);
addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
removeAll();
if ((doControls = !doControls)) {
surf.stop();
add(controls);
} else {
try {
surf.sleepAmount = Long.parseLong(tf.getText().trim());
} catch (Exception ex) {}
surf.start();
add(surf);
}
validate();
repaint();
}
});
}
public class Surface extends JPanel implements Runnable {
public Thread thread;
public long sleepAmount = 1000;
public intusageHistCount = 20000;
private int w, h;
private BufferedImage bimg;
private Graphics2D big;
private Font font = new Font("Times New Roman", Font.PLAIN, 11);
private int columnInc;
private float usedMem[][];
【java代码监控内存 java监控gc】private int ptNum[];
private int ascent, descent;
private Rectangle graphOutlineRect = new Rectangle();
private Rectangle2D mfRect = new Rectangle2D.Float();
private Rectangle2D muRect = new Rectangle2D.Float();
private Line2D graphLine = new Line2D.Float();
private Color graphColor = new Color(46, 139, 87);
private Color mfColor = new Color(0, 100, 0);
private String usedStr;
public Surface() {
setBackground(Color.black);
addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (thread == null) start(); else stop();
}
后面还有很多代码没贴出来 自己到JDK 的demo目录下查看吧
请问用Java代码,怎样测试一段程序占用了多少内存?你可以先用内存监控工具,进行监控 , 看看这个功能到底用多少内存 。如果不多,其实都不需要实现你说的代码监控的 。如果你要使用代码监控,你可是使用Runtime类的几个属性,MaxMemory、FreeMemory、TotalMemory 。然后实现个线程,在下载pdf功能前开启线程,然后完毕时关闭线程,如果内存即将溢出(设定个阈值 , 比如说15%),就报错,跳转到错误页面 。
如何监控Java应用程序的Windows内存使用情况应用程序很高兴对所有这些活动一无所知 。它只知道自己的虚拟地址空间 。但是java代码监控内存,如果当前在主存中的页面集(称为 驻留集)少于实际要使用的页面集(称为 工作集)java代码监控内存,应用程序的性能很快就会显著降低 。(不幸的是,本文中您将看到,我们要讨论的工具常常交换使用这两个术语,尽管它们指的是完全不同的事物 。)
推荐阅读
- 汕头如何做网站推广运营,汕头网站制作方案定制
- js创建本地存储和调用,js本地存储几种形式
- python实现图片爬虫到指定路径,用python爬虫爬取图片的步骤
- mysql怎么退出循环 mysql怎么退出数据库
- word如何满屏黑色,word页面黑色怎么调成白色
- 如何理解新媒体赋能体系,新媒体赋权理论名词解释
- java代码输入闰年终端 java输入年份输出日历
- go语言书初学者,go语言哪本书比较好
- 区块链局限性,区块链局限性分析