卸了360之后,与之捆绑的加速球也没了。加速球可以查看剩余内存量,清理残留进程,有的时候不觉得这小玩意有多大作用,卸了之后才知道后悔。

  加速球的替代方案比比皆是,如Windows自带的任务管理器,窗口底部能看到内存使用率,手动杀死进程能释放资源。笔者是个追求视觉效果的人,就觉得任务管理器的显示效果太直白,缺乏美感,于是萌生了自己动手写个“内存监视器”的想法。

  内存监视器,顾名思义,就是监视内存的使用情况,涉及到读取内存信息和显示汇总结果两方面内容。读取内存信息可以借助SIGAR库,显示汇总结果有JFreeChart。

  SIGAR,即System Information Gatherer And Reporter,跨平台,支持多种语言,提供轻便的接口来收集CPU,内存,交换区,账户,文件系统,网络等信息。

  JFreeChart用来创建高质量图表,支持2D或3D的扇形图,柱形图,折线图等图表类型,还能以PNG,JPEG,PDF,SVG的格式导出图表。

  因为可以在官方站点找到帮助文档,所以此处不再冗述其使用方法。

  内存监视器的设计思想是每秒收集一次内存使用率,汇总起来绘制折线图,详细的源码如下:

  1. package org.warnier.zhang.systemmonitor;
  2.  
  3. import org.jfree.chart.ChartFactory;
  4. import org.jfree.chart.ChartPanel;
  5. import org.jfree.chart.JFreeChart;
  6. import org.jfree.chart.StandardChartTheme;
  7. import org.jfree.data.category.DefaultCategoryDataset;
  8. import org.jfree.ui.ApplicationFrame;
  9. import org.warnier.zhang.systemmonitor.util.SystemMonitor;
  10.  
  11. import javax.swing.*;
  12. import java.awt.*;
  13. import java.text.SimpleDateFormat;
  14. import java.util.*;
  15. import java.util.List;
  16. import java.util.Timer;
  17.  
  18. /**
  19. * Startpoint for whole project.
  20. */
  21. public class Console extends ApplicationFrame {
  22. private static final long delayMillis = ;
  23. private List<Map<String, Double>> dataSet = new ArrayList<>();
  24.  
  25. public Console(String title) {
  26. super(title);
  27. ChartFactory.setChartTheme(getTheme());
  28.  
  29. //Gather system info.
  30. gatherSystemInfo();
  31. }
  32.  
  33. //Enable zh_CN.
  34. private StandardChartTheme getTheme() {
  35. StandardChartTheme theme = new StandardChartTheme("CN");
  36. Font font = new Font("宋体", Font.PLAIN, );
  37. theme.setExtraLargeFont(new Font("宋体", Font.BOLD, ));
  38. theme.setRegularFont(font);
  39. theme.setLargeFont(font);
  40. return theme;
  41. }
  42.  
  43. private void gatherSystemInfo() {
  44. final SystemMonitor monitor = new SystemMonitor();
  45. new Timer().schedule(new TimerTask() {
  46. @Override
  47. public void run() {
  48. Map<String, Double> dataItem = new HashMap<>();
  49. dataItem.put(SimpleDateFormat.getTimeInstance().format(new Date()), monitor.getMemory());
  50. dataSet.add(dataItem);
  51. //Retain 8 latest items.
  52. if (dataSet.size() > ) {
  53. dataSet.remove();
  54. }
  55. invalidate(getChart());
  56. }
  57. }, , delayMillis);
  58. }
  59.  
  60. private void invalidate(JFreeChart chart) {
  61. ChartPanel chartPanel = new ChartPanel(chart);
  62. // ? Can't use zh_CN.
  63. //chartPanel.setFont(new Font("MS Song", Font.PLAIN, 12));
  64. setContentPane(chartPanel);
  65. ((JPanel)getContentPane()).updateUI();
  66. }
  67.  
  68. private JFreeChart getChart() {
  69. JFreeChart chart = ChartFactory.createLineChart("内存监视器",
  70. null,
  71. null,
  72. wrapDataSet(dataSet));
  73. return chart;
  74. }
  75.  
  76. private DefaultCategoryDataset wrapDataSet(List<Map<String, Double>> rawData) {
  77. DefaultCategoryDataset dataSet = new DefaultCategoryDataset();
  78. for (int i = ; i < rawData.size(); i++) {
  79. for (Map.Entry<String, Double> entry : rawData.get(i).entrySet()) {
  80. dataSet.addValue(entry.getValue(), "内存占用率", entry.getKey());
  81. }
  82. }
  83. return dataSet;
  84. }
  85.  
  86. public static void main(String[] args) {
  87. Console console = new Console("System Monitor");
  88. console.setSize(, );
  89. console.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  90. console.setVisible(true);
  91. }
  92. }

  效果截图

  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. Ubuntu 13.04 用户安装 gnome 3.8 桌面

    昨天我试用了一把 Ubuntu gnome 13.04,如果你看了那一片文章:Ubuntu Gnome 13.04 体验截图.对 Ubuntu gnome 13.04 并不是采用的gnome 3.8 ...

  2. selinux 工具下载地址

    http://userspace.selinuxproject.org/releases/ 里面包含了 Name Last modified Size Description Parent Direc ...

  3. BeagleBone Black 板第三课:Debian7.5系统安装和远程控制BBB板

    BBB板第三课:Debian7.5系统安装和远程控制BBB板 由于BBB板系统是Debian 7.4.据说使用Debian系统能够实现非常多BBB板的无缝连接.能够更好的学习和控制BBB板,所以就决定 ...

  4. Java OCR tesseract 图像智能字符识别技术

    公司有需求啊,所以就得研究哈,最近公司需要读验证码,于是就研究起了图像识别,应该就是传说中的(OCR:光学字符识别OCR),下面把今天的收获整理一个给大家做个分享. 本人程序用的tesseract,官 ...

  5. 解决apache+tomcatserver环境中文乱码的问题

    在使用apache做转发服务器时,碰到了中文乱码的问题. 说说解决思路: 1.通常乱码是由于编码不统一造成的.所以要先推断是不是由于编码问题造成的,假设是的话,那统一编码就能够去解决. 2.tomca ...

  6. QT 打开文件对话框汇总

    Qstring fileName = QFileDialog::getOpenFileName(this, tr("open file"), " ",  tr( ...

  7. client多线程

    1.多线程对象 对象可以是多线程访问,线程可以在这里分为两类: 为完成内部业务逻辑的创建Thread对象,线程需要访问对象. 使用对象的线程外部对象. 进一步假设更精细的划分.业主外螺纹成线等线,. ...

  8. 什么是PV,UV。

    PV浏览(Page View).该网页访问量,每次页面打开PV统计+1,也刷新. IP接入号码指独立IP接入号码,计算基于独立IP在计算的时间段来计算访问我们的网站1二级IP接入号码. 是否这个计算在 ...

  9. 【C语言探索之旅】 第一部分第十课:练习题+习作

    内容简介 1.课程大纲 2.第一部分第十课: 练习题+习作 3.第二部分第一课预告: 模块化编程 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三 ...

  10. w3wp占用CPU过高

    w3wp占用CPU过高 在此之前项目有发生过两次类似的状况,都得以解决,但最近又会发现偶尔CPU会跑满,虽然之前使用过WinDbg解决过两次问题但人的记忆是不可靠的,今天处理同样问题的时候还是遇到了一 ...