Java基础知识(待更新)

  1. Java内存模型

    Java虚拟机规范中将Java运行时数据分为6种:

    1.程序计数器:是一个数据结构,用于保存当前正常执行的程序的内存地址。Java虚拟机的多线程就是通过线程轮流切换并分配处理器时间来实现的,为了线程切换后能恢复到正确的位置,每条线程都需要一个独立的程序计数器,互不影响,该区域为“线程私有”。
    
    2.Java虚拟机栈:线程私有的,与线程生命周期相同,用于存储局部变量表,操作栈,方法返回值。局部变量表放着基本数据类型,还有对象的引用。
    
    3.本地方法栈:跟虚拟机栈很像,不过它是为虚拟机使用到的Native方法服务。
    
    4.Java堆:所有线程共享的一块内存区域,对象实例几乎都在这分配内存。
    
    5.方法区:各个线程共享的区域,储存虚拟机加载的类信息,常量,静态变量,编译后的代码。
    
    6.运行时常量池:代表运行时每个class文件中的常量表。包括几种常量:编译时的数字常量、方法或者域的引用。
    

2.类加载器工作机制

1.装载:将Java二进制代码导入jvm中,生成Class文件。 
2.连接:a)校验:检查载入Class文件数据的正确性 b)准备:给类的静态变量分配存储空间 c)解析:将符号引用转成直接引用 
3:初始化:对类的静态变量,静态方法和静态代码块执行初始化工作。

双亲委派模型:类加载器收到类加载请求,首先将请求委派给父类加载器完成 用户自定义加载器->应用程序加载器->扩展类加载器->启动类加载器。

3.Java垃圾回收机制

4.String、StringBuffer和StringBuilder三者的关系

1.每次操作字符串,String会生成一个新的对象,而StringBuffer不会
2.String对象的长度不可变,而StringBuffer/StringBuilder对象的长度是可变
3.StringBuffer是线程安全的,而StringBuilder是非线程安全的

5.fail-fast机制 VS fail-safe机制

* fail-fast机制是java集合(Collection)中的一种错误检测机制。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。 例如:当某一个线程A通过iterator去遍历某集合的过程中,若该集合的结构(结构上的修改,不是简单的修改集合元素内容)被其他线程所改变了;那么线程A访问集合时,就会抛出ConcurrentModificationException异常,产生fail-fast事件

* fail-safe任何对集合结构的修改都会在一个复制的集合上进行修改,因此不会抛出ConcurrentModificationException
fail-safe机制有两个问题
(1)需要复制集合,产生大量的无效对象,开销大
(2)无法保证读取的数据是目前原始数据结构中的数据。

6.反射机制

7.Java并发编程:synchronized关键字的原理
http://www.cnblogs.com/paddix/p/5367116.html

—————————————————————————————

参考链接https://segmentfault.com/p/1210000008569567/read

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值