/[schmitzm]/trunk/src/skrueger/swing/HeapBar.java
ViewVC logotype

Annotation of /trunk/src/skrueger/swing/HeapBar.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 604 - (hide annotations)
Wed Dec 9 14:15:53 2009 UTC (15 years, 2 months ago) by alfonx
Original Path: branches/2.0-RC1/src/skrueger/swing/HeapBar.java
File MIME type: text/plain
File size: 2612 byte(s)
2.0-RC1 branch ist für GP1.3 bugfixes...  1.0-gt2-2.6  ist der entwicklungs brnach 
1 alfonx 519 package skrueger.swing;
2    
3     import java.awt.Color;
4     import java.awt.Graphics;
5 alfonx 546 import java.awt.event.MouseAdapter;
6     import java.awt.event.MouseEvent;
7 alfonx 519 import java.util.Locale;
8     import java.util.Timer;
9     import java.util.TimerTask;
10    
11     import javax.swing.JProgressBar;
12     import javax.swing.SwingUtilities;
13    
14     import org.apache.log4j.Logger;
15    
16     import schmitzm.geotools.gui.GeotoolsGUIUtil;
17     import schmitzm.lang.LangUtil;
18     import schmitzm.lang.ResourceProvider;
19     import schmitzm.swing.SwingUtil;
20     import skrueger.swing.formatter.MbDecimalFormatter;
21    
22     public class HeapBar extends JProgressBar {
23     private static final Logger LOGGER = Logger.getLogger(HeapBar.class);
24    
25     protected static ResourceProvider RESOURCE = new ResourceProvider(LangUtil
26     .extendPackagePath(SwingUtil.class,
27     "resource.locales.SwingResourceBundle"), Locale.ENGLISH);
28    
29     private Timer updateTimer;
30     String valueAsText = "";
31     MbDecimalFormatter formatter = new MbDecimalFormatter();
32    
33     public HeapBar() {
34     updateTimer = new Timer("check memory");
35     updateTimer.scheduleAtFixedRate(new UpdateMemoryBarTask(), 100, 1000);
36    
37     setMinimum(0);
38     setMaximum(100);
39    
40     SwingUtil.setPreferredWidth(this, 200);
41 alfonx 546
42     // Clicking the bar triggers a GC
43     addMouseListener( new MouseAdapter() {
44     @Override
45     public void mouseClicked(MouseEvent e) {
46     LangUtil.gcTotal();
47     }
48     });
49 alfonx 519 }
50    
51     @Override
52     protected void paintComponent(Graphics g) {
53     super.paintComponent(g);
54     g.setColor(Color.black);
55     g.drawString(valueAsText, 5, 12);
56     }
57    
58     class UpdateMemoryBarTask extends TimerTask {
59    
60     @Override
61     public void run() {
62    
63     // Get current size of heap in bytes
64     long heapSize = Runtime.getRuntime().totalMemory();
65    
66     // Get maximum size of heap in bytes. The heap cannot grow beyond
67     // this size.
68     // Any attempt will result in an OutOfMemoryException.
69     long heapMaxSize = Runtime.getRuntime().maxMemory();
70    
71     // Get amount of free memory within the heap in bytes. This size
72     // will increase
73     // after garbage collection and decrease as new objects are created.
74     long heapFreeSize = Runtime.getRuntime().freeMemory();
75    
76     long used = (heapSize - heapFreeSize);
77    
78     int percentaUsed = (int) (used * 100 / heapMaxSize);
79    
80     if (percentaUsed > 80)
81     LOGGER.warn(percentaUsed + "% belegt");
82    
83     if (percentaUsed > 70) {
84     if (percentaUsed > 90)
85     setForeground(Color.red);
86     else
87     setForeground(Color.orange);
88     } else {
89     setForeground(Color.green);
90     }
91    
92     setValue(percentaUsed);
93     valueAsText = RESOURCE.getString("HeapMemoryBar.status", formatter
94     .format(used), percentaUsed, formatter.format(heapMaxSize));
95    
96     repaint();
97     }
98     }
99     }

Properties

Name Value
svn:eol-style native
svn:keywords Id URL
svn:mime-type text/plain

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26