未知数据

从头看Java

   ::  :: 联系 :: 聚合  :: 管理
  28 Posts :: 0 Stories :: 10 Comments :: 0 Trackbacks

1. java程序的运行机制

    1. java语言是编译型还是解释型?

    编译型语言指使用特定的编译器,针对特定的平台(操作系统)将源代码一次性翻译成可被该平台硬件执行的机器码(包括机器指令和操作数),并包装成该平台所能识别的可执行的程序.这个过程称为编译(Compile).编译生成的可执行的程序可以脱离开发环境,在特定的平台上运行.解释型语言指使用专门的解释器对源代码逐行解释成特定平台的机器码,并立即执行.解释型语言相当于将编译型语言中的编译和解释工作混合在一起同时进行.

    解释型语言每执行一次源代码就需要重新编译一次,因此执行效率比较低,但解释型语言跨平台确比较容易,只需要提供特定平台的解释器,该解释器就会负责将源代码解释成特定平台上的机器指令.而编译型语言的运行效率较高,但移植比较麻烦.如果需要移植,则需要将源代码复制到新的平台上,针对该平台进行修改并重新编译.

    java语言既是编译型语言也是解释型语言.

       java语言在编译的时候不是生成特定平台相关的机器码,而是生成与平台无关的字节码,只面向JVM(Java Virtual Machine).

       这种字节码必须由JVM解释执行.

    2. 关于JVM

    JVM可以看做是一个抽象的计算机,和实际的计算机一样,也具有指令集和存储区域.它负责执行指令,还要负责管理数据,内存和寄存器.不同平台上的JVM是不同的,但是它们都提供相同的编程接口.所以JVM是java语言可以跨平台的关键部分,只要不同的平台实现不同的JVM,编译后的class文件就可以在该平台上运行.

2. 关于Java的部分概念

    1. JDK=Java SE Development Kit,java标准版开发包,包括java编译器,运行时环境(JRE)以及常用的java类库等

    2. JRE=Java Runtime Environment.java运行时环境.包含JVM以外,还有其他类的加载器,字节码校验器以及大量的基础类库.

    3. Java EE SDK . 包括JDK.学习java EE的软件和开发包(Software Development Kit)

3. java的环境配置

   1. 在windows下用户变量和系统变量的区别?

   系统变量对所有用户有效,用户变量只对当前用户有效.对于当前用户而言,两者没有区别,只是系统变量中的配置会优先于用户变量中的配置.

   2. classPath需要配置吗?

   JDK1.4以前的版本需要手动的设置classPath变量,让JRE去搜索java类文件.需要配置当前路径(.)及%JAVA_HOME%\lib\dt.jar和%JAVA_HOME%\lib\tools.jar.但在JDK1.5中可以不配置classPath变量,JRE可以自动搜索当前路径下的类文件和自动加载dt.jar和tools.jar,同时如果配置了classPath变量,则JRE会严格按照变量的路径去搜索类文件.也就是说如果要配置classPath路径就一定要配置准确,否则还是要报错的.

   3. classPath变量中的路径尽量不要出现空格,否则可以引发错误

4. java的垃圾回收机制(Garbage Collection GC)

    1. java语言不需要程序员直接控制内存回收.垃圾回收的发生有不可预知性,不建议使用finalize()和System.gc()来建议系统进行垃圾回收,因为这样做不不能精准的控制垃圾回收机制.可以通过暗示使垃圾回收机制可以尽快的回收那些不再使用的对象.也就是将该对象的引用变量设置为null.

    2. java程序的内存分配和回收都是由JRE在后台进行维护.通常JRE会提供一个超级线程来进行检测和控制,一般是在CPU空闲或内存不足的情况下自动进行的,程序员无法精确控制垃圾回收的时间和顺序.

    3. java运行时的数据存放在堆内存,垃圾回收机制就是负责这部分内存中的资源.它并不能回收其他如磁盘IO等物理资源.

    4. 垃圾回收机制的缺点是它的开销会影响程序的性能.JVM所做的就是监控程序中所有的对象,确认哪些是无用的对象,并最终释放这些无用的对象.而且java的垃圾回收机制还不是很完备,它并不能保证可以100%地收集所有废弃的内存.

    5. 垃圾回收的精确性主要包括2个方面:

       a. 垃圾回收机制可以精确地标记活着的对象.Java中的对象具有唯一性.

       b. 垃圾回收机制可以精确地定位对象之间的引用关系.这是实现归并和复制等算法的必要条件,通过这种引用关系,可以保证所有相关的对象都能被可靠的回收及重新分配,从而有效地减少内存碎片的产生

    6. 现在的JVM有多种不同的垃圾回收机制,每种机制会因其算法差异而表现各异.有的当垃圾回收开始时就停止应用程序的运行,有的当垃圾回收运行时,同时允许应用程序运行,还有的同一时间垃圾回收有多个线程在运行.

posted on 2009-01-04 19:29 wangjc 阅读(149) 评论(0)  编辑  收藏 所属分类: 从头看Java

只有注册用户登录后才能发表评论。


网站导航: