日期:2014-05-20  浏览次数:20671 次

急问!为什么我的java程序运行这么耗内存?
我写了一个非常简单的java swing程序。完成显示一张jpg图片,图片只有450K。但是运行它,需要差不多30兆的内存。但是如果将窗体最小化,它占用内存会小一些,只有1兆多一点。不理解java为什么这么吃内存,不应该阿。请大家帮忙看看,以下是我代码。另外,可以解释一下,java程序运行时,内存主要用在哪儿了,谢谢!
package image;
import java.awt.Image;
import java.awt.Color;
import java.awt.Toolkit;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JWindow;


public class DrawImage extends javax.swing.JFrame {
  Image myImage;
  String imageNameOne = new String("DSCN8010.JPG");
  public DrawImage() {
  initComponents();
  myImage = Toolkit.getDefaultToolkit().getImage(imageNameOne);
  Dimension iScreen = Toolkit.getDefaultToolkit().getScreenSize();
  int x = iScreen.width;
  int y = iScreen.height;
  this.setBounds(0,0,x,y);
  this.setTitle("Image");  
  this.setVisible(true);  
  this.setDefaultCloseOperation(EXIT_ON_CLOSE); 
  this.setBackground(Color.BLUE);
   
  }
  public void paint(Graphics g){  
  g.drawImage(myImage,0,0,800,600,this);  
  g.dispose();
   
  }
   
  public static void main(String args[]) {
  java.awt.EventQueue.invokeLater(new Runnable() {
  public void run() {
  new DrawImage().invalidate();  
  }
  });
  }
   
   
   
}

------解决方案--------------------
这才是JVM嘛,一个加载了jdk_install_path\jre\lib这么多jar包,以及整个解释环境,占内存很正常!
------解决方案--------------------
JVM自身也是一个程序,也是要消耗内存的,而JAVA程序是运行在JVM之上的,所以总消耗内存为两部分之和。