亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

提高Java程序內存效率

2019-11-18 13:11:24
字體:
來源:轉載
供稿:網友

  我們都知道java程序之所以被廣大程序員青睞,很大的一個原因是因為Java有GC(垃圾收集),不用程序員花很大的精力來解決內存釋放和泄漏問題。而這些問題總是C/C++程序員需要花很大精力來認真地面對的。
  
  問題總是雙面的,GC給我們帶來了很大的快樂,釋放了程序員很多的精力和時間,但是在某些時候也會給我們帶來一些小小的麻煩。Java里的Object并非交給GC去釋放就可高枕無憂了,下面從JDK1.4的Demo中Java2D的Memory Monitor說起。
  
  先看看Memory Monitor單獨運行的效果。
  
  可以看到因為有個While循環,GC釋放內存有一定的時間,在這個時間中間,內存消耗的很厲害。峰值達到923K。程序代碼的如下:
  
  //SysGcMain.java Created on 9:15:59
  
  package com.gx2.system;
  
  /**
  
  * @author Frank Gao @version 1.00
  
  * Copy right by GX2 Studio 2003
  
  * Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved.
  
  *
  
  * Redistribution and use in source……以后省略
  
  */
  
  /*
  
  * @(#)MemoryMonitor.java  1.32 03/01/23
  
  */
  
  import java.awt.*;
  
  import java.awt.event.*;
  
  import java.awt.image.BufferedImage;
  
  import java.awt.geom.Line2D;
  
  import java.awt.geom.Rectangle2D;
  
  import java.util.Date;
  
  import javax.swing.*;
  
  import javax.swing.border.EtchedBorder;
  
  import javax.swing.border.TitledBorder;
  
  /**
  
  * Tracks Memory allocated & used, displayed in graph form.
  
  */
  
  public class SysGcMain extends JPanel {
  
  static JCheckBox dateStampCB = new JCheckBox("Output Date Stamp");
  
  public Surface surf;
  
  JPanel controls;
  
  boolean doControls;
  
  JTextField tf;
  
  public SysGcMain() {
  
  setLayout(new BorderLayout());
  
  setBorder(new TitledBorder(new EtchedBorder(), "Memory Monitor"));
  
  add(surf = new Surface());
  
  controls = new JPanel();
  
  controls.setPReferredSize(new Dimension(135,80));
  
  Font font = new Font("serif", Font.PLAIN, 10);
  
  JLabel label = new JLabel("Sample Rate");
  
  label.setFont(font);
  
  label.setForeground(Color.black);
  
  controls.add(label);
  
  tf = new JTextField("1000");
  
  tf.setPreferredSize(new Dimension(45,20));
  
  controls.add(tf);
  
  controls.add(label = new JLabel("ms"));
  
  label.setFont(font);
  
  label.setForeground(Color.black);
  
  controls.add(dateStampCB);
  
  dateStampCB.setFont(font);
  
  addMouseListener(new MouseAdapter() {
  
  public void mouseClicked(MouseEvent e) {
  
  removeAll();
  
  if ((doControls = !doControls)) {
  
  surf.stop();
  
  add(controls);
  
  } else {
  
  try {
  
  surf.sleepAmount = Long.parseLong(tf.getText().trim());
  
  } catch (Exception ex) {}
  
  surf.start();
  
  add(surf);
  
  }
  
  validate();
  
  repaint();
  
  }
  
  });
  
  }
  
  public class Surface extends JPanel implements Runnable {
  
  public Thread thread;
  
  public long sleepAmount = 1000;
  
  private int w, h;
  
  private BufferedImage bimg;
  
  private Graphics2D big;
  
  private Font font = new Font("Times New Roman", Font.PLAIN, 11);
  
  private Runtime r = Runtime.getRuntime();
  
  private int columnInc;
  
  private int pts[];
  
  private int ptNum;
  
  private int ascent, descent;
  
  private float freeMemory, totalMemory;
  
  private Rectangle graphOutlineRect = new Rectangle();
  
  private Rectangle2D mfRect = new Rectangle2D.Float();
  
  private Rectangle2D muRect = new Rectangle2D.Float();
  
  private Line2D graphLine = new Line2D.Float();
  
  private Color graphColor = new Color(46, 139, 87);
  
  private Color mfColor = new Color(0, 100, 0);
  
  private String usedStr;
  
  public Surface() {
  
  setBackground(Color.black);
  
  addMouseListener(new MouseAdapter() {
  
  public void mouseClicked(MouseEvent e) {
  
  if (thread == null) start(); else stop();
  
  }
  
  });
  
  }
  
  public Dimension getMinimumSize() {
  
  return getPreferredSize();
  
  }
  
  public Dimension getMaximumSize() {
  
  return getPreferredSize();
  
  }
  
  public Dimension getPreferredSize() {
  
  return new Dimension(135,80);
  
  }
  
  public void paint(Graphics g) {
  
  if (big == null) {
  
  return;
  
  }
  
  big.setBackground(getBackground());
  
  big.clearRect(0,0,w,h);
  
  float freeMemory = (float) r.freeMemory();
  
  float totalMemory = (float) r.totalMemory();
  
  // .. Draw allocated and used strings ..
  
  big.setColor(Color.green);
  
  big.drawString(String.valueOf((int) totalMemory/1024) + "K allocated", 4.0f, (float) ascent+0.5f);
  
  usedStr = String.valueOf(((int) (totalMemory - freeMemory))/1024)
  
  + "K used";
  
  big.drawString(usedStr, 4, h-descent);
  
  // Calculate remaining size
  
  float ssH = ascent + descent;
  
  float remainingHeight = (float) (h - (ssH*2) - 0.5f);
  
  float blockHeight = remainingHeight/10;
  
  float blockWidth = 20.0f;
  
  float remainingWidth = (float) (w - blockWidth - 10);
  
  // .. Memory Free ..
  
  big.setColor(mfColor);
  
  int MemUsage = (int) ((freeMemory / totalMemory) * 10);
  
  int i = 0;
  
  for ( ; i < MemUsage ; i++) {
  
  mfRect.setRect(5,(float) ssH+i*blockHeight,
  
  blockWidth,(float) blockHeight-1);
  
  big.fill(mfRect);
  
  }
  
  // .. Memory Used ..
  
  big.setColor(Color.green);
  
  for ( ; i < 10; i++) {
  
  muRect.setRect(5,(float) ssH+i*blockHeight,
  
  blockWidth,(float) blockHeight-1);
  
  big.fill(muRect);
  
  }
  
  // .. Draw History Graph ..
  
  big.setColor(graphColor);
  
  int graphX = 30;
  
  int graphY = (int) ssH;
  
  int graphW = w - graphX - 5;
  
  int graphH = (int) remainingHeight;
  
  graphOutlineRect.setRect(graphX, graphY, graphW, graphH);
  
  big.draw(graphOutlineRect);
  
  int graphRow = graphH/10;
  
  // .. Draw row ..
  
  for (int j = graphY; j <= graphH+graphY; j += graphRow) {
  
  graphLine.setLine(graphX,j,graphX+graphW,j);
  
  big.draw(graphLine);
  
  }
  
  // .. Draw animated column movement ..
  
  int graphColumn = graphW/15;
  
  if (columnInc == 0) {
  
  columnInc = graphColumn;
  
  }
  
  for (int j = graphX+columnInc; j < graphW+graphX; j+=graphColumn) {
  
  graphLine.setLine(j,graphY,j,graphY+graphH);
  
  big.draw(graphLine);
  
  }
  
  --columnInc;
  
  if (pts == null) {
  
  pts = new int[graphW];
  
  ptNum = 0;
  
  } else if (pts.length != graphW) {
  
  int tmp[] = null;
  
  if (ptNum < graphW) {
  
  tmp = new int[pt

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
38少妇精品导航| 久久国产精品网站| 欧美在线精品免播放器视频| 国产精品久久久久久久久久三级| 国产成人精品电影久久久| 国产精品视频精品视频| 亚洲美女在线观看| 日韩av在线天堂网| 国产精品视频永久免费播放| 综合136福利视频在线| 久久久久久久久久久免费精品| 91免费观看网站| 日韩在线精品视频| 国产免费一区二区三区在线观看| 曰本色欧美视频在线| 91最新在线免费观看| 久久久久久高潮国产精品视| 日韩欧美在线视频观看| 欧美最猛性xxxxx亚洲精品| 亚洲香蕉成人av网站在线观看| 亚洲无亚洲人成网站77777| 日日噜噜噜夜夜爽亚洲精品| 亚洲一区二区久久久久久| 亚洲日韩中文字幕在线播放| 91av在线视频观看| 久久精品国产2020观看福利| 伊人久久综合97精品| 日韩在线中文字| 精品免费在线视频| 国产区精品在线观看| 久久成人18免费网站| 日韩美女福利视频| 日本最新高清不卡中文字幕| 欧洲成人免费视频| 日韩成人在线视频网站| 国产精品一区电影| 亚洲男人天堂久| 亚洲福利小视频| 国外成人在线播放| 欧美日韩国产一区二区三区| 国产精品入口免费视| 久久久99免费视频| 日本久久久a级免费| 日本久久中文字幕| 成人在线一区二区| 91欧美激情另类亚洲| 夜夜嗨av色综合久久久综合网| 亚洲国产精久久久久久| 日韩美女在线看| 国产91免费看片| 欧美精品在线免费观看| 欧美成人一区在线| 亚洲性无码av在线| 正在播放欧美视频| 这里只有精品久久| 91久久久久久| 国内精品久久久久久久久| 久久91超碰青草是什么| 欧美精品激情视频| 中文字幕在线精品| 九九综合九九综合| 北条麻妃久久精品| 韩国福利视频一区| 亚洲成人av资源网| 国产精品老牛影院在线观看| 亚洲美女自拍视频| 欧美日韩亚洲视频| 日韩欧美亚洲国产一区| 国产精品盗摄久久久| 欧美午夜久久久| 国产精品高潮呻吟视频| 亚洲最新av在线| 亚洲天堂2020| 精品精品国产国产自在线| 国自产精品手机在线观看视频| 中文字幕日本欧美| 久久久久久久久久久久久久久久久久av| 亚洲国产小视频在线观看| 日韩精品有码在线观看| 91精品久久久久久综合乱菊| 91九色国产视频| 人妖精品videosex性欧美| 亚洲最大的av网站| 精品国产户外野外| 91久久综合亚洲鲁鲁五月天| 国产日韩精品视频| 亚洲日本成人网| 国产精品国产三级国产专播精品人| 精品爽片免费看久久| 欧美性极品xxxx娇小| 亚洲国产精品电影在线观看| 亚洲第一av网站| 日韩欧美在线播放| 中文字幕亚洲第一| 日韩一区二区三区在线播放| 久久亚洲春色中文字幕| 黑丝美女久久久| 97久久精品人搡人人玩| 18一19gay欧美视频网站| 久久精品国产99国产精品澳门| 91色视频在线导航| 日韩在线观看免费高清| 亚洲最大的免费| 在线播放亚洲激情| 国产欧美日韩精品专区| 欧美黑人xxxx| 国产精品久久激情| 清纯唯美亚洲综合| 日韩最新在线视频| 国内精品久久久久久影视8| 高清一区二区三区四区五区| 国产精品美乳一区二区免费| 欧美成人激情在线| 欧美日韩国产一区中文午夜| 成人午夜高潮视频| 91九色国产社区在线观看| 九九精品视频在线观看| 91精品中国老女人| 亚洲在线观看视频网站| 精品免费在线观看| 91精品视频播放| 亚洲成色999久久网站| 性日韩欧美在线视频| 亚洲国产精彩中文乱码av在线播放| 欧美亚洲国产日本| 中国china体内裑精亚洲片| 欧美丰满少妇xxxx| 久热99视频在线观看| 2020国产精品视频| 狠狠躁夜夜躁人人躁婷婷91| 日韩成人激情在线| 一区二区三区动漫| 国产精品主播视频| 亚洲激情国产精品| 亚洲日本欧美日韩高观看| 一区二区三区视频在线| 色yeye香蕉凹凸一区二区av| 国产不卡视频在线| 欧美日韩国产一中文字不卡| 久久91超碰青草是什么| 欧美电影免费观看| 97色在线播放视频| 久久这里只有精品视频首页| 欧美激情欧美激情在线五月| 欧美多人乱p欧美4p久久| 日韩av网址在线观看| 久久精品国产99国产精品澳门| 国产日韩在线看| 欧美日韩精品在线| 精品日韩中文字幕| 欧美成人免费在线观看| 欧美激情免费视频| 亚洲aa中文字幕| 日韩av电影院| 97视频国产在线| 成人深夜直播免费观看| 日韩电影免费观看在线观看| 亚洲第一二三四五区| 国产精品美女呻吟| 不卡在线观看电视剧完整版| 欧美日韩人人澡狠狠躁视频| 国产日本欧美一区二区三区在线| 欧美黑人又粗大| 国产亚洲欧美日韩美女|