疯狂Java讲义学习笔记(一)概述

1、一些基本概念

1)JDK/JRE/JVM

JDK,java标准开发包,包括java运行时环境(JRE)、java编译器/调试器、常用类库等

JRE,java运行时环境,包括了JVM,类加载器、实施运行库、java应用发布等

JVM,java虚拟机,是java的核心,负责和操作系统(OS)解释,也是跨操作系统的关键。

java代码经过编译成class文件后,由不同环境的JVM进行解释运行;而在解释过程中,还需要不同类库支持,JRE中包含了这些类库。所以,JVM不可能单独存在。

扩展:SDK

SDK——软件开发包,是一个统称,而JDK是java的软件开发包,属于SDK一个子集。

2)JavaSE/JavaEE/JavaME

JavaSE,以前叫J2SE,java平台标准版,简单来说是用于开发桌面软件;

JavaEE,以前叫J2EE,java平台企业版,可以用作企业开发,比如企业网站的电子商务网站等;我们常用的spring、structs、hibernate都属于JavaEE;

JavaME,以前叫J2ME(micro edition),针对嵌入式设备、机顶盒、手机游戏等

2、运行机制

运行机制:

疯狂Java讲义学习笔记(一)概述_第1张图片

java编译器(javac)位于JDK,负责解释的是JVM,由JRE提供相关类库

3、JVM

顾名思义,JVM相当于一台计算机,和实际计算机一样,有自己的执行指令、寄存器和存储器

JVM标准:

* 指令集
* 寄存器
* 类文件格式
* 栈
* 垃圾回收堆
* 存储区

4、HelloWorld

public class helloworld{
    public static void main(String[] args) {
        System.out.println("hello world!");
    }
}
//编译
javac helloworld.java
//运行
java helloworld

psvm —— public static void main(String[] args) ,这是所有java程序的入口,虚拟机就是从这里找到开始的地方

5、垃圾回收

java程序的内存分配和回收,都是有JRE在后台自动进行的,JRE会回收不再使用的内存,这种机制成为垃圾回收机制(GC)。通常JRE会提供一个专门的后台线程来进行检测和控制,一般都是在CPU空闲和内存不足时进行垃圾回收。

1)JVM的堆内存,是存放系统正在运行时的所有类(对象),堆内存(Heap)的释放是由垃圾回收器来进行释放。当所有指向某个对象的引用消失的时候,存放该对象的内存即成为垃圾,JVM就会有个线程来释放这个内存

2)垃圾回收器另一个任务就是整理内存碎片——内存占用对象之间的空间,会把这些对象移动的内存的其他区域,以保证内存空间尽量连续。

3)需要注意的是,GC只会释放存于Heap中的托管资源,而针对非托管资源,比如数据库连接、文件句柄等就无能为力。特别是数据库连接。

6、堆和栈

(1)存储

  • 方法中定义的基本类型变量,以及对象的引用变量都存放在函数栈中;
  • 堆内存存放的是引用类型的对象(new创建的对象)、数组;

(2)优劣势

  • 堆的优势是可以动态分配大小,生存周期不用告诉编译器;
  • 堆的缺点就是存取相对比较慢,而栈要更快;
  • 栈数据可以共享;缺点是生存周期是确定的,一旦方法执行完成,对应的局部变量就会销毁;

你可能感兴趣的:(学习笔记)