小工具:内存监视器(SystemMonitor)
卸了360之后,与之捆绑的加速球也没了。加速球可以查看剩余内存量,清理残留进程,有的时候不觉得这小玩意有多大作用,卸了之后才知道后悔。
加速球的替代方案比比皆是,如Windows自带的任务管理器,窗口底部能看到内存使用率,手动杀死进程能释放资源。笔者是个追求视觉效果的人,就觉得任务管理器的显示效果太直白,缺乏美感,于是萌生了自己动手写个“内存监视器”的想法。
内存监视器,顾名思义,就是监视内存的使用情况,涉及到读取内存信息和显示汇总结果两方面内容。读取内存信息可以借助SIGAR库,显示汇总结果有JFreeChart。
SIGAR,即System Information Gatherer And Reporter,跨平台,支持多种语言,提供轻便的接口来收集CPU,内存,交换区,账户,文件系统,网络等信息。
JFreeChart用来创建高质量图表,支持2D或3D的扇形图,柱形图,折线图等图表类型,还能以PNG,JPEG,PDF,SVG的格式导出图表。
因为可以在官方站点找到帮助文档,所以此处不再冗述其使用方法。
内存监视器的设计思想是每秒收集一次内存使用率,汇总起来绘制折线图,详细的源码如下:
package org.warnier.zhang.systemmonitor; import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.warnier.zhang.systemmonitor.util.SystemMonitor; import javax.swing.*;
import java.awt.*;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.List;
import java.util.Timer; /**
* Startpoint for whole project.
*/
public class Console extends ApplicationFrame {
private static final long delayMillis = ;
private List<Map<String, Double>> dataSet = new ArrayList<>(); public Console(String title) {
super(title);
ChartFactory.setChartTheme(getTheme()); //Gather system info.
gatherSystemInfo();
} //Enable zh_CN.
private StandardChartTheme getTheme() {
StandardChartTheme theme = new StandardChartTheme("CN");
Font font = new Font("宋体", Font.PLAIN, );
theme.setExtraLargeFont(new Font("宋体", Font.BOLD, ));
theme.setRegularFont(font);
theme.setLargeFont(font);
return theme;
} private void gatherSystemInfo() {
final SystemMonitor monitor = new SystemMonitor();
new Timer().schedule(new TimerTask() {
@Override
public void run() {
Map<String, Double> dataItem = new HashMap<>();
dataItem.put(SimpleDateFormat.getTimeInstance().format(new Date()), monitor.getMemory());
dataSet.add(dataItem);
//Retain 8 latest items.
if (dataSet.size() > ) {
dataSet.remove();
}
invalidate(getChart());
}
}, , delayMillis);
} private void invalidate(JFreeChart chart) {
ChartPanel chartPanel = new ChartPanel(chart);
// ? Can't use zh_CN.
//chartPanel.setFont(new Font("MS Song", Font.PLAIN, 12));
setContentPane(chartPanel);
((JPanel)getContentPane()).updateUI();
} private JFreeChart getChart() {
JFreeChart chart = ChartFactory.createLineChart("内存监视器",
null,
null,
wrapDataSet(dataSet));
return chart;
} private DefaultCategoryDataset wrapDataSet(List<Map<String, Double>> rawData) {
DefaultCategoryDataset dataSet = new DefaultCategoryDataset();
for (int i = ; i < rawData.size(); i++) {
for (Map.Entry<String, Double> entry : rawData.get(i).entrySet()) {
dataSet.addValue(entry.getValue(), "内存占用率", entry.getKey());
}
}
return dataSet;
} public static void main(String[] args) {
Console console = new Console("System Monitor");
console.setSize(, );
console.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
console.setVisible(true);
}
}
效果截图

github链接:https://github.com/Warnier-zhang/SystemMonitor.git。
小工具:内存监视器(SystemMonitor)的更多相关文章
- [Android Memory] Android性能测试小工具Emmagee
转载:http://blog.csdn.net/anlegor/article/details/22895993 Emmagee是网易杭州QA团队开发的用于测试指定android应用性能的小工具.该工 ...
- linux运维自动化shell脚本小工具
linux运维shell 脚本小工具,如要分享此文章,请注明文章出处,以下脚本仅供参考,若放置在服务器上出错,后果请自负 1.检测cpu剩余百分比 #!/bin/bash #Inspect CPU # ...
- Windows下好用到必须开机自启的小工具
折腾过linux,黑苹果,最后还是回到了盖茨大叔的windows.得出的结论是,日常使用的话,折腾Linux还不如把精力去拿去折腾windows.分享下折腾的成果,介绍下一些很不错的小工具. ...
- C#照片批量压缩小工具
做了一个照片批量压缩工具,其实核心代码几分钟就完成了,但整个小工具做下来还是花了一天的时间.中间遇到了大堆问题,并寻求最好的解决方案予以解决.现在就分享一下这个看似简单的小工具所使用的技术. 软件界面 ...
- 腾讯优测干货精选| 安卓开发新技能Get -常用必备小工具汇总
文/腾讯公司 陈江峰 优测小优有话说: 移动研发及测试干货哪里找?腾讯优测-优社区你值得拥有~ 开发同学们都知道,安卓开发路上会碰到很多艰难险阻,一不小心就被KO.这时候,没有新技能傍身怎么行?今天我 ...
- C#使用 SQLite 数据库 开发的配置过程及基本操作类,实例程序:工商银行贵金属行情查看小工具
--首发于博客园, 转载请保留此链接 博客原文地址 本文运行环境: Win7 X64, VS2010 1. SQLite 的优点: SQLite 是一款轻型数据库,开发包只有十几M, 相对于 MSS ...
- 2014年Windows平台软件推荐:神器小工具(骨灰级
原文 http://www.wtoutiao.com/a/120621.html 底层工具 “If you know how to use Process Monitor competently, ...
- 【游戏开发】Excel表格批量转换成CSV的小工具
一.前言 在工作的过程中,我们有时可能会面临将Excel表格转换成CSV格式文件的需求.这尤其在游戏开发中体现的最为明显,策划的数据文档大多是一些Excel表格,且不说这些表格在游戏中读取的速度,但就 ...
- Windows平台软件推荐:神器小工具(骨灰级)
底层工具 "If you know how to use Process Monitor competently, people of both sexes will immediately ...
随机推荐
- 部署Win Server 2012十项注意
博文来自 http://server.zol.com.cn/351/3511746.html Windows Server 2012是微软公司在2012年推出的面向中小企业应用一款全新的服务器操作系统 ...
- Shrio登陆验证实例详细解读(转)
摘要:本文采用了Spring+SpringMVC+Mybatis+Shiro+Msql来写了一个登陆验证的实例,下面来看看过程吧!整个工程基于Mavevn来创建,运行环境为JDK1.6+WIN7+to ...
- Cocos2d-x 3.1.1 学习日志14--CocosStudio学习必看
听说Cocos Studio非常久了,主要是由于骨骼动画.眼下看来Cocos2d-x播放动画的方式仅仅有2种: 第一种:是播放序列帧动画,即将动画的每一帧都载入进缓存里,须要播放时再使用Animati ...
- poj Firing(最大重量封闭图)
Firing 题目: 要解雇一些人,而解雇的这些人假设人跟他有上下级的关系,则跟他有关系的人也要一起解雇.每一个人都会创造一定的价值,要求你求出在最大的获利下.解雇的人最小. 算法分析: 在这之前要知 ...
- Oracle 11g 的PL/SQL函数结果缓存
模拟Oracle性能诊断艺术做了两个试验样品.书上说的不承担RELIES_ON.果缓存的失效操作(result_cache RELIES_ON(test1,test2)).试验证明不正确,函数f1() ...
- FZU1669 Right-angled Triangle【毕达哥拉斯三元组】
主题链接: pid=1669">http://acm.fzu.edu.cn/problem.php?pid=1669 题目大意: 求满足以a.b为直角边,c为斜边,而且满足a + b ...
- PHP redis操作类 个人总结
<pre name="code" class="php"><span style="font-size:18px;"> ...
- Kohana 数据库
只要不使用官方网站的教程,自己摸索出来的,有一个错误,当我们指了出来,哦,,好吧共同进步~ 首先配置:modules\database\config\database.php <?php 'de ...
- 导出文本pdf文件
出口手续往往是一些数据需求,学习文本导出到今天pdf文件.主要用于QPrinter,QPainter TextEditToPdf::TextEditToPdf(QWidget *parent, Qt: ...
- 移动端 rem字体的使用demo
<!doctype html> <html> <head> <meta charset="utf-8"> <title ...