java语言 百文网手机站

Java编程节省内存的方法

时间:2022-12-16 12:36:23 java语言 我要投稿

Java编程节省内存的方法

  Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。下面是小编为大家整理的Java编程节省内存的方法,欢迎参考!

  Java编程节省内存的方法

  1、别用new Boolean。

  在很多场景中Boolean类型是必须的,比如JDBC中boolean类型的set与get都是通过Boolean封装传递的,大部分ORM也是用Boolean来封装 boolean类型的,比如:

  以下是引用片段:

  ps.setBoolean("isClosed",new Boolean(true));

  ps.setBoolean("isClosed",new Boolean(isClosed));

  ps.setBoolean("isClosed",new Boolean(i==3));

  通常这些系统中构造的Boolean实例的个数是相当多的,所以系统中充满了大量Boolean实例小对象,这是相当消耗内存的。Boolean类实际上只要两个实例就够了,一个true的实例,一个false的实例。

  Boolean类提供两了个静态变量:

  以下是引用片段:

  public static final Boolean TRUE = new Boolean(true);

  public static final Boolean FALSE = new Boolean(false);

  因为valueOf的内部实现是:return (b TRUE : FALSE);

  所以可以节省大量内存。相信如果Java规范直接把Boolean的构造函数规定成private,就再也不会出现这种情况了。

  2、别用new Integer。

  和Boolean类似,java开发中使用Integer封装int的场合也非常 多,并且通常用int表示的'数值通常都非常小。SUN SDK中对Integer的实例化进行了优化,Integer类缓存了-128到127这256个状态的Integer,如果使用 Integer.valueOf(int i),传入的int范围正好在此内,就返回静态实例。这样如果我们使用Integer.valueOf代替new Integer的话也将大大降低内存的占用。如果您的系统要在不同的SDK(比如IBM SDK)中使用的话,那么可以自己做了工具类封装一下,比如IntegerUtils.valueOf,这样就可以在任何SDK中都可以使用这种特性。

  3、用StringBuffer代替字符串相加。

  这个我就不多讲了,因为已经被 人讲过N次了。我只想将一个不是笑话的笑话,我在看国内某“着名”java开发的WEB系统的源码中,竟然发现其中大量的使用字符串相加,一个拼装SQL 语句的方法中竟然最多构造了将近100个string实例。无语中!

  4、过滥使用哈希表

  有一定开发经验的开发人员经常会使用hash表(hash 表在JDK中的一个实现就是HashMap)来缓存一些数据,从而提高系统的运行速度。比如使用HashMap缓存一些物料信息、人员信息等基础资料,这 在提高系统速度的同时也加大了系统的内存占用,特别是当缓存的资料比较多的时候。其实我们可以使用操作系统中的缓存的概念来解决这个问题,也就是给被缓存的分配一个一定大小的缓存容器,按照一定的算法淘汰不需要继续缓存的对象,这样一方面会因为进行了对象缓存而提高了系统的运行效率,同时由于缓存容器不是无限制扩大,从而也减少了系统的内存占用。现在有很多开源的缓存实现项目,比如ehcache、oscache等,这些项目都实现了FIFO、MRU等常见的缓存算法。

  5、避免过深的类层次结构和过深的方法调用。

  因为这两者都是非常占用内存的(特别是方法调用更是堆栈空间的消耗大户)。

  6、变量只有在用到它的时候才定义和实例化。

  7、尽量避免使用static变量,类内私有常量可以用final来代替。

  8、对频繁使用的对象采用对象池技术

  9、保证每个IO操作,connection及时关闭

  Java编程入门必备知识

  1Java编程出现的背景

  1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言。希望用于控制嵌入在有线电视交换盒、PDA等的微处理器,但却没有取得成功,后来由于互联网的发展,而由于Oak语言本身的具有安全、可移植,又可跨平台,可以解决Internet 上的大型应用问题,所以在1994年将Oak语言更名为Java语言,并且于1995年正式推出,使Java成为网上最流行的编程语言。

  2Java的特点

  平台无关性:一个应用程序可以运行不同的操作系统平台,主要采用的是虚拟机技术支持平台无关性。

  简单:Java 设计人员删除了C++ 中许多复杂的功能,如指针操纵和运算符重载等。

  面向对象:在 Java 中任何东西都是对象。因此,重点集中在数据、应用程序中操作对象的方法以及过程上。

  分布式:Java 可用于开发能够在多个平台、操作系统和图形用户界面之间移植的应用程序。

  健壮性:Java 在编译和解释时都会检查代码。

  多线程:Java 程序使用称为“多线程”的进程同时处理多项任务。

  安全性:Java 提供了用于执行程序的受控环境,以及多层次的安全控制。

  3Java的三种运行平台

  J2SE(Java 2 Platform Stand Edition),Java标准版或Java标准平台

  J2EE(Java 2 Platform Enterprise Edition),Java企业版或Java企业平台 J2ME(Java 2 Platform Micro Edition),Java微型版或Java小型平台

  4 Java的三种核心机制

  ①.Java 虚拟机(Java Virtual Machine):实现Java的跨平台

  ③.代码安全性检测(Code Security)

  ②.垃圾收集机制(Garbage collection):系统自动执行,不能强制执行

  5 什么是虚拟机?

  虚拟机:在一台计算机上由软件或硬件模拟的计算

  6 Java实现跨平台的原理图

  7 什么是JDK?

  JDK是sun公司推出的Java开发工具包,包括Java类库、Java编译器、Java解释器、Java运行时环境和Java命令行工具。JDK提供Java程序的编译和运行命令,但没提供程序编辑环境。Java的一些开发工具提供程序的开发环境,如:Eclipse、MyEclipse和Jbbilder等,它们都是建立在JDK的运行环境之上的。

  8 什么是JRE

  是Java Runtime Environment (动态)简称,也就是Java的运行时环境,它提供三个主要功能:

  ①.加载代码:由class loader 完成;

  ②.校验代码:由bytecode verifier 完成;

  ③.执行代码:由 runtime interpreter完成

  9 什么是Java编译器?什么是Java解释器?

  Java编译器:针对Java虚拟机产生class文件,因此是独立于平台的。 Java解释器:负责将Java虚拟机的代码在特定的平台上运行。

  10 JDK的安装与设置

  ①.下载JDK

  ②.安装JDK

  ③.设置环境变量,设置系统变量ClassPath,输入值为C:Program

  FilesJavajdk1.6.0_18lib。

  11 编译和运行环境

  ①.使用Javac.exe命令编译Java源程序,例如:Javac Hello.Java,编译后会产生一个字节码文件Hello.class

  ②.使用Java.exe命令运行字节码文件,例如:Java Hello。

【Java编程节省内存的方法】相关文章:

Java编程节省内存的方法有哪些03-16

Java编程时节省内存技巧09-06

java节省内存的几条建议09-16

java面向对象编程的方法10-31

Java内存溢出的解决方法12-03

Java编程中获取路径的方法04-12

java面向对象编程的方法资料12-06

Java编程中异常处理的方法03-29

Java的内存模型04-02