java并发与GC
2018-06-18 03:46:18来源:未知 阅读 ()
1、synchronized
所重入场景:
继承关系的类,子类调用父类的方法----------线程安全
带有synchronized关键字的方法互相调用----------线程安全
2、volatile
作用:是变量在多个线程中可见,当改变变量值时(注意,改变的是主内存的值),每个线程的工作内存还是原先的值;
强制线程到主内存(共享内存)中去读,而不是去线程的私有内存中去读,从而实现多个线程中可见。
注意:此关键没有原子性,只有可见性,不能替代synchronized关键字的同步性
3、Atomic...
具有原子性,有boolean、Integer类型等;但是使用次关键字不能保证多次操作的原子性,只能保证此方法的原子性
4、线程之间的通信
使用wait和noyify方法实现线程之间的通信,两个方法都是Object的方法
wait和notify必须配合synchronized关键字使用,wait方法释放锁,notify方法不释放锁
5、java堆
有新生代和老年代
新生代:ende区、s0区和s1区(或者form区和to区)
ende区存放新生(第一次创建)的对象,每次发生GC,对象的年龄都会增大,这是对象会进入s0或者s1区,默认当
对象年龄满15之后,若对象还继续被引用,则会分配到老年代,s0和s1区大小相等并且角色可以相互转换
6、垃圾收集算法
引用计数算法:在对象被引用时计数器加1,而引用失去计数器减1;缺点,无法处理对象被循环引用的情况,并且每次进行加减操作比较浪费性能;
标记清除法:顾名思义,就是标记被引用的对象和清除所有未被标记的引用对象;缺点,会产生大量的空间碎片,浪费空间;
复制算法:主要用于新生代,对象存放在s0或者s1区,每次只会使用一块区域,在垃圾回收时,将存活的对象(未进入老年代的对象)复制到s1或者s0区,然后清空s0或者s1区;
标记压缩法:在标记清除法基础之上做了优化,主要解决的空间碎片的问题;把存活对象压缩到内存的一端,然后进行垃圾清理(jvm中老年代的GC就是使用的标记压缩法);
7、分区算法
把内存划分为N个区域,每个区域都可以独立使用,解决了GC时候扫描整块内存所消耗的性能,只需要清理某块区域;
8、TLAB区(Thread Local Allocation Buffer)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash