java map集合 事务控制_对象回收过程?线程池执行过程? map原理?集合类关系?synchronized 和 volatile ? 同一个类的方法事务传播控制还有作用吗?java 锁...

1.  对象回收过程?

可达性分析算法: 如果一个对象从 GC Roots 不可达时,则证明此对象不可用。 通过一系列称为GC ROOTS的对象作为起点,从这些起点往下搜索,搜索走过的路径

称为引用链,当一个对象到GC ROOTS 没有任何引用链,我们判定这个对象是可回收的。。

在java 中,可作用GC ROOTS对象的包括:

虚拟机栈(栈针中本地变量表)中引用的对象,

方法区中类静态属性引用的对象,

方法区中常量引用的对象,

本地方法栈中即native 引用的对象。。

具体过程:  在对象不可达时,也并不是非死不可,要真正宣告一个对象死亡,需要进行两次标记过程: 如果一个对象在进行可达性分析后没有与GC ROOTS 的相连接的

引用链,那将会被第一次标记并进行一次筛选: 筛选的目的是判定是否执行finalize方法,当对象没有覆盖finalize 方法,或者finalize 方法已经被虚拟机

调用过,虚拟机认定这两种情况为不必要执行finalize方法。

如果需要执行finalize方法,那么这个对象将会放置在一个F-Queue 队列中,并在稍后建立一个低优先级的线程来执行它。 finalize 方法是对象逃离死亡的

最后机会,在执行finalize 方法时会对F-Queue中的对象进行第二次标记,如果对象在finalize 方法中成功拯救自己(如把this赋值给某个变量,总之就是让

对象出现引用链),则讲该对象移出队列。剩下的对象就只能等待被回收了。

5.  synchronized 和 volatile

volatile 修饰的变量对所有线程具有可见性 , 意思是如果一个线程修改了 该变量,另一个线程可以立即获得修改后的新值。但是这个并不是原子性的,在并发

情况下并不是安全的:原因是多个线程在做运算前获取的可能是脏数据,如何 变量++ 操作,先获取变量值,然后+1, 多个线程获取的是脏数据。

volatile 禁止指令重排序优化:指令重排是指java 编译成机器码时会优化语句执行顺序。 如线程A在执行某些操作后把某个变量赋值true, 另一个线程判断true 做一些操作,

指令重排后可能到指线程A 在某些操作 完成之前就把 变量赋值true了。。导致线程B判断true后并不能获取正确的结果(比如我要获取线程A的某些操作结果)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417297.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ie当前正在禁用加载项的状态下运行,要管理或删除加载项

右击快捷方式——属性 目标栏中删除后面的 “-xxx”参数

swift上传图片

import UIKit import AFNetworkingclass YJRequest: NSObject {//#pragma mark - 上传图片 func uploadImageWithImage(_ imageData: Data){let sessionConfiguration URLSessionConfiguration.defaultlet manager AFHTTPSessionManager(sessionConfiguration: sessionConfi…

mysql数据库的注释语句是_coding++ :MySQL 使用 SQL 语句查询数据库所有表注释已经表字段注释...

1、要查询数据库 "mammothcode" 下所有表名以及表注释/*查询数据库 ‘mammothcode’ 所有表注释*/SELECT TABLE_NAME,TABLE_COMMENT FROM information_schema.TABLES WHERE table_schemamammothcode;2、要查询表字段的注释/*查询数据库 ‘mammothcode’ 下表 ‘t_adm…

windows 下安装Python easy_install 和pip

系统: win 7 64位 离线安装比较快捷,在线安装有时会提示网络问题 一. easy_install安装 下载压缩包 https://pypi.python.org/pypi/setuptools#files 解压, cmd 进入解压目录 执行 (python) setup.py install 即可安装 二.pip 安装…

.net mysql-connector-net连接mysql

引用DLL引用 mysql-connector-net包中的MySql.Data.dll 数据库连接字符串Serverlocalhost;Uidroot;Pwdlocalhost;Databaseweb;Port3306;charsetutf8;MySQLHelperpublic class MySQLHelper{private static string connectionString ConfigurationManager.ConnectionStrings[&qu…

java work stealing_Java线程池之WorkStealingPool,任务窃取算法

1 import java.io.IOException;2 import java.util.concurrent.ExecutorService;3 import java.util.concurrent.Executors;4 import java.util.concurrent.TimeUnit;56 /**7 * 任务窃取算法8 */9 public class WorkStealingPool {1011 public static void main(String[] args)…

基于keepalived 实现VIP转移,lvs,nginx的高可用

一、Keepalived 高可用集群的解决方案 二、VRRP的有限状态机 三、利用keepalived 实现主从VIP的切换 四、 实现在状态转变的时候自定义进行通知, 五、 实现负载均衡 六:实现nginx的高可用 一、Keepalived 高可用集群的解决方案 最初的诞生是为ipvs提供高…

MySQL数据库数据分开存储

MySQL数据默认存储在ibdata1文件中。如果要每张表使用单独的innoDB文件,修改my.ini文件,增加下面配置 innodb_file_per_table然后重启服务

data数值设置 vue_怎么改变vue中data的数据

v圈调直年情,量的单框来离理这接法清都的为ar app3 new 需朋朋支带不新器功几的事上为做的和时意后Vue({el:#item,data:{item_data:[],},computed:{},methods: {}});我想点击的时候改变vue的item_data这个是数据,能打印出来就是在页面渲染不goods_box是…

java---sychronized的深入理解

synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A…

java 数组排序面试题_Java面试宝典_基础编程练习题_数组排序插值(一)

题目题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。代码…

js刷新页面

location.reload() 和 location.replace()的区别和应用: reload 方法,该方法强迫浏览器刷新当前页面。语法: location.reload([bForceGet]) 参数: bForceGet, 可选参数, 默认为 false,从客户端缓存里取…

MySQL Incorrect string value: 有可能是字符串长度不够了

Incorrect string value: \xE5\xBE\x97\xE4\xBB\xB7... for column Content at row 1 1.字符集全部调整为utf8。2.超出字符串长度。各字段类型长度text 2^16-1mediumtext 2^16-1longtext 2^32-1

PHP独特学习模式_php基础知识

一.PHP介绍PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、JAVA、Perl以及PHP自创的语法。利于学习,应用广泛,主要适用于…

CentOS x64 安装gcc

挂载CentOS-6.2-x86_64-bin-DVD1.iso进入光盘Package目录rpm -ivh kernel-headers-2.6.32-220.el6.x86_64.rpmrpm -ivh libgcc-4.4.6-3.el6.x86_64.rpmrpm -ivh mpfr-2.4.1-6.el6.x86_64.rpmrpm -ivh cpp-4.4.6-3.el6.x86_64.rpmrpm -ivh nscd-2.12-1.47.el6.x86_64.rpmrpm -iv…

hql 语法详解

HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查…

php进程状态进度,PHP监控进程状态,完成掉线自动重启

1. 利用Shell脚本实现#!/bin/bashPORT0while [ true ];doread -p "please enter the port that you want to minitor:" portif [ $port -gt 65536 ] || [ $port -lt 1 ];thenecho "the port you enter is not correctly"elsePORT$portbreakfidonewhile [ t…

js判断函数是否存在

try { if(typeof(eval(funcName))"function") {funcName();}}catch(e){//alert("not function"); }