java方法cpu耗时监控原理

Python027

java方法cpu耗时监控原理,第1张

top命令

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.

提供你个思路 首先如果纯java遍历文件夹 效率会有些低 并且取不到文件创建时间只能取到最新更新时间 所以你必须只能比对文件目录 也就是存份文件列表 拿最新获取的文件列表和以前的做对比 多数来的就是新增的 ~

获取文件目录结构就别用java遍历了 文件目录复杂还有文件较多效率相对低些

提示你用java调用系统命令 存成文件 就ok~

我想到的就这些 有大神 估计能提供更好的方案!

在 \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.List<MemoryPoolMXBean>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 int usageHistCount = 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[][]

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目录下查看吧