易截截图软件、单文件、免安装、纯绿色、仅160KB

java中会存在内存泄漏吗

会。 所谓内存泄露就是指一个不再被程序使用的对象或变量一直被占据在内存中。
   java导致内存泄露的原因很明确:长生命周期的对象持有短生命周期对象的引用就很可能发生内存泄露,尽管短生命周期对象已经不再需要,但是因为长生命周期对象持有它的引用而导致不能被回收,这就是java中内存泄露的发生场景。
    1.集合类,集合类仅仅有添加元素的方法,而没有相应的删除机制,导致内存被占用。这一点其实也不明确,这个集合类如果仅仅是局部变量,根本不会造成内存泄露,在方法栈退出后就没有引用了会被jvm正常回收。而如果这个集合类是全局性的变量(比如类中的静态属性,全局性的map等即有静态引用或final一直指向它),那么没有相应的删除机制,很可能导致集合所占用的内存只增不减,因此提供这样的删除机制或者定期清除策略非常必要。
   2.单例模式。不正确使用单例模式是引起内存泄露的一个常见问题,单例对象在被初始化后将在JVM的整个生命周期中存在(以静态变量的方式),如果单例对象持有外部对象的引用,那么这个外部对象将不能被jvm正常回收,导致内存泄露,考虑下面的例子:
  class A{
  public A(){
    B.getInstance().setA(this);
  }
  ....
  }
  //B类采用单例模式
  class B{
  private A a;
  private static B instance=new B();
  public B(){}
  public static B getInstance(){
  return instance;
  }
  public void setA(A a){
  this.a=a;
  }
  //getter...
  }
  显然B采用singleton模式,他持有一个A对象的引用,而这个A类的对象将不能被回收。想象下如果A是个比较大的对象或者集合类型会发生什么情况。
   上面所讲的这些也启发我们如何去查找内存泄露问题,在代码复审的时候关注长生命周期对象:全局性的集合、单例模式的使用、类的static变量等等。在Java的实现过程中,也要考虑其对象释放,最好的方法是在不使用某对象时,显式地将此对象赋空。最好遵循谁创建谁释放的原则。


相关文档:

java 用文件对话框打开文件

//文件的打开
import java.awt.FileDialog;
import java.awt.event.*;
import java.io.*;
import java.io.File;
import java.io.FileReader;
public class FileOpen {
private FileDialog filedialog_open;
private String fileopen = null, filename = null;// 用于存放打开文件地址 和文件名
private File fi ......

浅谈Java 关键字


java关键字以前没什么注意,因为是很基础的东东。只是今天做SCJP题目,一看答案吓我大跳,翻转了我以往的错误观念。查阅了不少资料终于弄清楚了。题目如下:
Which are not Java keywords?
A. TRUE      B. sizeof   C. const    D. super   E. void
& ......

Java语言程序设计案例教程174页8.2.1我的解答

public class MainThread1{
 public static void main(String args[]){
  MinorThread m1=new MinorThread(1);
  MinorThread m2=new MinorThread(2);
  new Thread(m1).start();
  new Thread(m2).start();
  
  
 }
}
class MinorThrea ......

MYSQL和java中的数值范围 91KGE

mysql数值范围
tinyint  -128~127   0~255
smallint  -32768~32767  0~65535
mediumint -8388608~8388607  0~16777215
int -2147483648~2147483647 0~4294967295
bigint  -9223372036854775808~9223372036854775807   0~18446744073709551615
java中
byte   ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号