专业知识2

1.创建新线程:t.start()

2.equals只比较内容

3.java类加载器

1)引导类加载器(BootStrap class loader)

加载java核心类库,使用原生代码实现

2)扩展类加载器(Extensions class loader)

加载Java的扩展库,java虚拟机的实现会提供一个扩展库目录,扩展类加载器在此目录里查找并加载java类

3)系统类加载器(System class loader)

根据java应用的类路径(CLASSPATH)来加载java类

 4.java内存区域

1)程序计数器是一块较小的内存空间,它的作用可以看作是当前线程所执行的字节码的信号指示器,每个线程都需要一个独立的程序计数器(无OutOfMemoryError异常)

2)java虚拟机栈,描述的是java方法执行的内存模型,每个方法在执行时都会创建一个栈帧(stack frame)用于存储局部信息表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直到执行结束,就对应着一个栈帧从虚拟机中入栈到出栈的过程

3)java堆是java虚拟机所管理的内存中最大的一块,线程共享,所有的对象实例以及数组都在这里分配内存

4)方法区是各个线程共享的内存区域,它用于存储已经被虚拟机加载的常量、即时编译器编译后的代码、静态变量等数据

 5.垃圾收集

A.使用垃圾收集的程序不需要明确释放对象

B.现代垃圾收集能够处理循环引用问题

采用可达性分析处理循环引用问题

C.垃圾收集能提高程序员效率

gc最大的作用就是程序员不需要自己释放内存,比如你new出来一个对象,你使用完成之后不需要手动去释放,gc完成了这个工作

D.还会存在内存泄漏问题

解析:1)垃圾收集机制主要针对新生代和老年代的内存进行回收

2)内存泄漏(Memory Leak)指一个不再被使用的对象或者变量还在内存中占有存储空间

3)内存泄漏主要有两种情况:

1.在堆中申请的空间没有释放

2.对象已不再被使用,但是仍然在内存中保留着(注:这里的不再被使用是指对程序来说没用,如数据库连接使用后没有关,但是还存在着引用)

你可能感兴趣的:(专业知识2)