卸了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)的更多相关文章

  1. [Android Memory] Android性能测试小工具Emmagee

    转载:http://blog.csdn.net/anlegor/article/details/22895993 Emmagee是网易杭州QA团队开发的用于测试指定android应用性能的小工具.该工 ...

  2. linux运维自动化shell脚本小工具

    linux运维shell 脚本小工具,如要分享此文章,请注明文章出处,以下脚本仅供参考,若放置在服务器上出错,后果请自负 1.检测cpu剩余百分比 #!/bin/bash #Inspect CPU # ...

  3. Windows下好用到必须开机自启的小工具

    折腾过linux,黑苹果,最后还是回到了盖茨大叔的windows.得出的结论是,日常使用的话,折腾Linux还不如把精力去拿去折腾windows.分享下折腾的成果,介绍下一些很不错的小工具.     ...

  4. C#照片批量压缩小工具

    做了一个照片批量压缩工具,其实核心代码几分钟就完成了,但整个小工具做下来还是花了一天的时间.中间遇到了大堆问题,并寻求最好的解决方案予以解决.现在就分享一下这个看似简单的小工具所使用的技术. 软件界面 ...

  5. 腾讯优测干货精选| 安卓开发新技能Get -常用必备小工具汇总

    文/腾讯公司 陈江峰 优测小优有话说: 移动研发及测试干货哪里找?腾讯优测-优社区你值得拥有~ 开发同学们都知道,安卓开发路上会碰到很多艰难险阻,一不小心就被KO.这时候,没有新技能傍身怎么行?今天我 ...

  6. C#使用 SQLite 数据库 开发的配置过程及基本操作类,实例程序:工商银行贵金属行情查看小工具

    --首发于博客园, 转载请保留此链接  博客原文地址 本文运行环境: Win7 X64, VS2010 1. SQLite 的优点: SQLite 是一款轻型数据库,开发包只有十几M, 相对于 MSS ...

  7. 2014年Windows平台软件推荐:神器小工具(骨灰级

    原文  http://www.wtoutiao.com/a/120621.html 底层工具 “If you know how to use Process Monitor competently, ...

  8. 【游戏开发】Excel表格批量转换成CSV的小工具

    一.前言 在工作的过程中,我们有时可能会面临将Excel表格转换成CSV格式文件的需求.这尤其在游戏开发中体现的最为明显,策划的数据文档大多是一些Excel表格,且不说这些表格在游戏中读取的速度,但就 ...

  9. Windows平台软件推荐:神器小工具(骨灰级)

    底层工具 "If you know how to use Process Monitor competently, people of both sexes will immediately ...

随机推荐

  1. virtio-netdev 发送数据包

    在前面几文中已经大体介绍了virtio的重要组成,包含virtio net设备的创建,vring的创建,与virtio设备的交互方式.我们就从网络数据包的发送角度来看下virtio的详细使用流程. [ ...

  2. 将DataTable 数据插入 SQL SERVER 数据库

    原文:将DataTable 数据插入 SQL SERVER 数据库 以下提供3中方式将DataTable中的数据插入到SQL SERVER 数据库: 一:使用sqlcommand.executenon ...

  3. drools6 基本使用 -- 2

    续drools6 基本使用1 http://blog.csdn.net/cloud_ll/article/details/26979355 8. 创建src/main/test folder.把dro ...

  4. Light OJ 1406 Assassin`s Creed 减少国家DP+支撑点甚至通缩+最小路径覆盖

    标题来源:problem=1406">Light OJ 1406 Assassin`s Creed 意甲冠军:向图 派出最少的人经过全部的城市 而且每一个人不能走别人走过的地方 思路: ...

  5. LA3026 - Period(KMP)

    For each prefix of a given string S with N characters (each character has an ASCII code between 97 a ...

  6. oracle 转让日期格式字符串

    字符串传递日期格式 SELECT trunc(to_date(SALE_MON,'yyyy-mm'),'y'),trunc(to_date(SALE_MON,'yyyy-mm'),'mm')  FRO ...

  7. NET5实践:项目创建-结构概述-程序运行-发布部署

    ASP.NET5实践01:项目创建-结构概述-程序运行-发布部署   1.项目创建 ASP.NET5项目模板有三种: 新建项目: 选择模板: 2.结构概述 References对应配置是project ...

  8. 几款开源ESB总线的比较(转)

    现有的开源ESB总线中,自从2003年第一个开源总线Mule出现后,现在已经是百花争鸣的景象了.现在我就对现有的各种开源ESB总线依据性能.可扩展性.资料文档完整程度以及整合难易程度等方面展开. CX ...

  9. Android - 分享内容 - 给其他APP发送内容

    创建一个intent时,必须要指定intent将要触发的操作.Android定义了很多操作,包括ACTION_SEND,就象可以猜到的一样,表示intent是把数据从一个activity发送给另一个, ...

  10. * 类描写叙述:字符串工具类 类名称:String_U

    /****************************************** * 类描写叙述:字符串工具类 类名称:String_U * ************************** ...