`
jswing
  • 浏览: 10718 次
社区版块
存档分类
最新评论

swing内存监控效果

 
阅读更多

 

先来张效果图


这个demo用到了一个商业组件库,虽然是商业的,但是可以申请试用,还是值得学习的,哈哈,本文最后会附上申请地址

 

全部代码如下

 

package mydemo;

import javax.swing.*;
import twaver.Node;
import twaver.TDataBox;
import twaver.TWaverConst;
import twaver.chart.LineChart;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.TimerTask;
public class MemoryMonitor extends JPanel {
	TDataBox box=new TDataBox();
	LineChart lineChart=new LineChart(box);
	public MemoryMonitor(){
		this.setLayout(new BorderLayout());
		this.add(lineChart,BorderLayout.CENTER);
		final Node memory=new Node();
		memory.putChartStroke(TWaverConst.STROKE_SOLID_2);
		memory.putChartColor(new Color(255,255,0,255));
		box.addElement(memory);
		final Runtime rt = Runtime.getRuntime();
		
		lineChart.getLegendPane().setVisible(false);
		
		lineChart.setFixedValueCount(20);
		lineChart.setBackground(Color.BLACK);
		lineChart.setBackgroundGradient(false);
		lineChart.setBackgroundVisible(true);
		lineChart.setBackgroundOutlineColor(new Color(46,139,87));
		lineChart.setEnableXTranslate(false);
		lineChart.setEnableYZoom(false);
		lineChart.setLowerLimit(0);
		lineChart.setXScaleLineVisible(true);
		lineChart.setYScaleTextVisible(true);
		lineChart.setYScaleTextColor(Color.green);
		lineChart.setXScaleLineStroke(TWaverConst.STROKE_SOLID_1);
		lineChart.setYScaleLineStroke(TWaverConst.STROKE_SOLID_1);
		lineChart.setXScaleLineColor(new Color(46,139,87));
		lineChart.setYScaleLineColor(new Color(46,139,87));
		lineChart.setYAxisVisible(false);
		lineChart.setXAxisVisible(false);
		lineChart.setLineType(TWaverConst.LINE_TYPE_DEFAULT);
		lineChart.setYScaleValueGap(2);
		lineChart.setInterruptedWhenNullValue(true);
		lineChart.setYAxisTextColor(Color.green);
		lineChart.setXAxisFillColor(Color.yellow);
		lineChart.setForeground(Color.green);
		for(int i=0;i<19;i++){
			memory.addChartValue(null);
		}

		Timer t=new Timer(1000,new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				long total = rt.totalMemory();
				lineChart.setYAxisText("Total:"+(total/1024/1024)+"M");
				lineChart.setUpperLimit(total/1024/1024);
				memory.addChartValue((rt.totalMemory()-rt.freeMemory())/1024/1024);
				lineChart.setTitle("Used:"+((rt.totalMemory()-rt.freeMemory())/1024/1024)+"M");
			}
		});
		t.start();
	
		java.util.Timer timer=new java.util.Timer(true);
		timer.schedule(new TimerTask() {
			@Override
			public void run() {
				for(int i=0;i<80000;i++){
					System.out.println();
				}
			}
		}, 0,1000);
	}
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				JFrame frame=new JFrame();
				frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				frame.setSize(400, 300);
				frame.setLocationRelativeTo(null);
				frame.setResizable(false);
				frame.setContentPane(new MemoryMonitor());
				frame.setVisible(true);
			}
		});
	}
}

 

 
这个demo使用了一个名叫LineChart的图表控件,比较方便的地方是不用自己写2D代码绘制了,在对象上设置各种属性就可以(对于我这种喜欢偷懒的人来说真是福音啊)。

简单的介绍下LineChart的属性

setY/XAxis.... 用来设置坐标轴的相关属性

setY/XScale... 用来设置刻度的相关属性

 

属性太多不一一解释了,有兴趣的同学可以自行查看API

组件库的申请地址:http://www.servasoftware.com/ch/twaver.php?p_id=99

  • 大小: 15.6 KB
分享到:
评论

相关推荐

    java源码:swing-explorer(Swing开发辅助工具).rar

    Swing Explorer通过JMX(Java Management Extensions)和Java代理技术来实现对Swing应用程序的动态监控。它在运行时附加到目标Swing应用上,通过反射获取组件信息,并将其展示在图形用户界面上。这种动态附着的方式...

    swing-explorer(Swing开发辅助工具).7z

    6. **性能分析**:通过对组件的绘制时间和内存占用进行监控,开发者可以发现潜在的性能瓶颈,优化应用程序的运行效率。 7. **可扩展性**:Swing Explorer通常支持自定义插件,这意味着开发者可以根据需求添加新的...

    StarCraft-Swing.rar_starcraft

    开发者可能使用JProfiler或VisualVM等工具监控内存、CPU使用情况,优化代码性能。 这个项目为学习Java GUI编程和游戏开发的初学者提供了宝贵的参考,通过阅读和分析源代码,可以深入了解如何用Java实现复杂的游戏...

    在内存中话图而且是动态的哦

    在内存中画图往往与GUI编程结合,例如使用Qt、wxWidgets或Java的Swing/AWT库。这些库提供图形控件和事件处理机制,使得可以响应用户的输入并在内存中更新图像。 4. **图像处理**:内存中的画图还涉及图像处理技术,...

    java 绘制CPU使用率图形 源代码

    7. **内存监控**: - 虽然标题中未明确提及,但程序名为"MemoryMonitor",可能还包含了内存使用情况的监控。这部分可能使用`MemoryMXBean`来获取堆内存、非堆内存等信息,并在图形界面上显示。 通过学习和应用这些...

    freetype-2.9.1

    JConsole是Java的性能监控工具,通过它开发者可以实时监控Java应用程序的内存、线程、类加载等信息。Freetype的集成使得JConsole在展示这些监控数据时,能够提供清晰、专业的字体显示,帮助开发者更准确地理解和分析...

    Java动画编程优化技术探讨.zip

    3. 用户反馈:监控用户反馈,分析性能瓶颈,针对性地进行优化。 总之,Java动画编程优化需要综合考虑多个因素,从代码编写到框架选择,再到硬件资源的充分利用,每一步都对最终的动画效果和用户体验产生深远影响。...

    基于CloudSim 的云资源调度系统分析设计与实现——合肥工业大学云计算课程作业

    在这个云资源调度系统中,用户可以通过Swing界面提交任务,监控资源分配情况,以及查看调度结果。 此外,项目的实现结构采用客户端-服务器(Client-Server,CS)架构。在这种架构下,客户端负责用户的交互,而...

    java图片处理,每个文件实现了一种特效

    在Java中,我们可以使用`java.awt.image.BufferedImage`类以及`ColorModel`和`Raster`对象来操作像素值,实现图像过滤效果。 6. `TileImage.java` - 这个名字暗示了一个功能,可能是将大图切割成小块或者拼接多个小...

    模拟多进程并发

    9. **性能监控与调优**:开发者需要使用如JVisualVM等工具来监控线程状态,分析CPU和内存使用,以便优化并发程序的性能。 综上所述,这个“模拟多进程并发”的项目不仅涵盖了Java的并发编程,还涉及到了Swing的GUI...

    精简 jre 效果程序

    "精简 jre 效果程序"这个主题指的是对标准的JRE进行优化和裁剪,以减少其体积,提高运行效率或适应特定的系统需求。 1. **JRE组成部分**: JRE主要由以下几个部分组成: - Java虚拟机(JVM):负责解释并执行Java...

    jdk1.6中文帮助文档

    1. **Swing UI组件增强**: JDK 1.6对Swing组件进行了更新,增加了许多新特性和改进,如JTable的性能提升,以及更丰富的用户界面效果。 2. **国际化和本地化支持**: 对于中文环境,JDK 1.6提供了更好的本地化支持,...

    经典鱼屏保

    Java的`ImageIcon`类可以加载和显示这些资源,而高效地管理内存和资源释放是保证程序稳定运行的关键。 通过以上技术的结合,"经典鱼屏保"成功地创建了一个互动性强、视觉效果生动的屏保程序,为用户带来了轻松愉快...

    planeimages.rar

    1. 使用软引用:为了避免内存溢出,可以使用软引用(SoftReference)存储图像,当系统内存紧张时,垃圾回收器会自动清理这些引用的对象。 2. 位图缓存:对于大量重复使用的图像,可以考虑将其缓存为位图,以减少...

    Java2dDemo

    `MemoryMonitor.java`和`PerformanceMonitor.java`可能分别用于监控内存使用情况和程序性能,这对于理解和优化Java2D应用的资源消耗非常重要。 `TextureChooser.java`可能是用于选择和管理纹理的类,Java2D支持纹理...

    32位jdk1.6

    2. **增强的Swing组件**:Swing库在JDK1.6中得到了加强,提供了更多的UI组件和更好的外观效果,同时增强了可访问性和国际化支持。 3. **NIO.2**:JDK1.6引入了New I/O API(NIO.2),扩展了Java的I/O功能,提供了...

    jdk1.6_64bit.zip

    2. **改进的Swing组件**:JDK 6对Swing UI库进行了优化,增加了新的组件和功能,比如JLayer,用于实现自定义的UI效果和高级组件行为。 3. **动态代理增强**:Java动态代理机制在JDK 6中得到增强,允许创建接口的...

    中文版J2SE1.6开发文档

    - **JConsole**:提供了一个图形化的监控工具,可以监控Java应用的性能和内存使用情况。 - **JMX(Java Management Extensions)**:增强了管理扩展,方便远程管理和监控Java应用。 这些只是J2SE 1.6中部分关键...

    基于Java开发的微信数据分析工具。它不仅可以准确显示您的好友数、群聊数和当日的消息总量,.zip

    这些核心指标对于个人用户了解自己的微信使用习惯,以及企业监控营销活动的效果都具有实际意义。通过Java编程语言实现,确保了工具的跨平台性,使得无论在Windows、Mac还是Linux环境下,都能轻松运行。 【详细知识...

    yourkit jprofiler 6.0.2

    - **内存分析**:监测对象分配,识别内存泄漏,提供详细的内存快照对比,以帮助优化内存使用。 - **线程分析**:查看和分析线程状态,找出死锁和阻塞问题。 - **GUI性能分析**:评估Swing和JavaFX应用程序的用户界面...

Global site tag (gtag.js) - Google Analytics