卸了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. Linux下安装Oracle11g服务器(转)

    安装环境 Linux服务器:SuSe10 sp2 64位 Oracle服务器:Oracle11gR2 64位 系统要求 Linux安装Oracle系统要求 系统要求 说明 内存 必须高于1G的物理内存 ...

  2. statickeyword于C和C++用法

    一.C语言statickeyword两个使用 1).一个功能修改内部使用的变量,函数内的静态变量.这些变量的寿命比功能不再,它是具有一定的函数"状态",使用静态变量的作用通常是不可 ...

  3. Java Swing 绝对布局管理方法,null布局(转)

    首先把相关容器的布局方式设为 setLayout(null); 然后调用组件的  setBounds() 方法 设置button的位置为(100,100) 长宽分别为 60,25 jButton.se ...

  4. Andorid Async-HttpClient阅览

    Async-httpclient它是一个用于Android应用程序开发http访问开源框架.开源GitHub在,因为今天GitHub下载没有看到.我在这里提供下载地址.是之前从GitHub上下载的,版 ...

  5. 他们主动布局(autolayout)环境的图像编辑器

    hi,all: 在经过了一番犹豫之后.我决定将我自己做的这个小APP的源代码发布给大家: 其出发点是和大家一起学习iOS开发.仅供学习參考之用. 之前代码是托管与gitlab 上的,今天我将其pull ...

  6. 自己写CPU第四阶段(2)——验证该第一指令ori实现效果

    我们会继续上传新书<自己写CPU>(未公布),今天是12片,四篇 书名又之前的<自己动手写处理器>改为<自己动手写CPU> 4.3 验证OpenMIPS实现效果 4 ...

  7. AutoMapper在ABP框架

    AutoMapper在ABP框架中的使用说明 为了说明AutoMapper如何使用,我专门开设了一个专题来讲,如果您还没有查看该专题,请点击这里.既然系统地学习了AutoMapper,那么接下来就是该 ...

  8. ubuntu 下搭建apache+python的运行环境

    ubuntu下怎么搭建apache+python运行环境,可以参考http://www.01happy.com/ubuntu-apache-mod-python/ ,这里只是简单的记录下步骤,本文主要 ...

  9. Nuget的使用

    前言 最近看到园子上有关于NuGet (读音:new get)的使用,所以心血来潮也跟着学习做了一下,觉得很流b哦.于是也就记一下自己的学习心得(并非一味的重复轮子,只是觉得他人做的写的就是对的,自己 ...

  10. 概率统计(DP)

    问题叙述性说明 生成n个月∈[a,b]随机整数.并且将它们输出到x概率. 输入格式 输入线跟四个整数n.a,b,x,用空格分隔. 输出格式 输出一行包括一个小数位和为x的概率.小数点后保留四位小数 例 ...