Java 概念总结

来源:互联网 发布:公交车刷卡软件 编辑:程序博客网 时间:2024/05/18 03:50

JVM

描述:

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。


JNI

描述:

JNI是Java Native Interface的缩写,它提供了若干的API,实现了Java和其他语言的通信(主要是C&C++)。


JDK

描述:

主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库。

JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。

SE(J2SE),standard edition,标准版,是我们通常用的一个版本,从JDK 5.0开始,改名为Java SE。

EE(J2EE),enterprise edition,企业版,使用这种JDK开发J2EE应用程序,从JDK 5.0开始,改名为Java EE。

ME(J2ME),micro edition,主要用于移动设备、嵌入式设备上的java应用程序,从JDK 5.0开始,改名为Java ME。

没有JDK的话,无法编译Java程序,如果想只运行Java程序,要确保已安装相应的JRE。


JRE

描述:

JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。


内存/垃圾回收机制

描述:

通过 GC(一个守护进程)隐性回收内存资源。

产生原因:

  1. 对象无法使用,且没有任何线程可以使用到他;
  2. 给对象赋予了空值null,以下再没有调用过;
  3. 给对象赋予了新值,这样重新分配了内存空间;


内存泄露

描述:

无用对象(不再使用的对象)持续占有内存或无用对象的内存得不到及时释放,从而造成的内存空间的浪费称为内存泄露。

产生原因(部分):

  1. 关闭链接;
  2. 自动装箱;
  3. 静态集合类;
  4. 修改集合里面的对象属性;
  5. 单例对象持有外部对象的引用;
  6. 内存溢出;


内存溢出

描述:

指程序在申请内存时,没有足够的内存空间供其使用,堆栈已经达到系统设置的最大值,进而导致崩溃,那就是内存溢出。

产生原因:

如申请了一个integer,但给它存了long才能存下的数

 

堆(heap)和栈(stack)

描述:

堆:Java 的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。

栈:栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。


       Heap(堆)      Stack(栈) JVM中的功能     内存数据区          内存指令区 存储数据     对象实例 基本数据类型, 指令代码,常量,对象的引用地址


自动装箱、拆箱(享元模式)

描述:

装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。

Integer i = 10;  //装箱int n = i;   //拆箱
在装箱过程中,系统为我们执行了:Integer i = Integer.valueOf(10);而拆箱则执行了:i.intValue()。

产生原因:

比如我们有一个方法,接受一个对象类型的参数,如果我们传递一个原始类型值,那么Java会自动讲这个原始类型值转换成与之对应的对象。


0 0