黑_子

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2019年1月29日

摘要: 数据竞争 上述代码中,定义了两个共享变量 a 和 b,以及两个方法。在单线程分别调用方法一和方法二后,r1 和 r2 的值可能是(1,0) 或者是(0,2)。如果是在多线程环境下,两个方法分别跑在两个线程上,假设 Java 虚拟机在执行了任一方法的第一条赋值语句之后便切换线程,那么最终 r1 和 r 阅读全文
posted @ 2019-01-29 14:58 黑_子 阅读(161) 评论(0) 推荐(0) 编辑

2019年1月28日

摘要: java 中的 synchronized 运行 在 Java 中,我们经常用 synchronized 关键字对程序进行加锁。无论是一个代码块还是静态方法或者实例方法,都可以直接用 synchronized 声明。 当声明 synchronized 代码块时,编译的字节码将包含 monitorent 阅读全文
posted @ 2019-01-28 18:29 黑_子 阅读(286) 评论(0) 推荐(0) 编辑

2019年1月26日

摘要: Java 虚拟机的堆划分 Java 虚拟机将堆划分为新生代和老年代。其中新生代又被划分为 Eden 区,以及两个大小相同的 Survivor 区。 默认情况下,Java 虚拟机采取一种动态分配的策略,根据对象生成的速率,以及 Survivor 区的使用情况动态调整 Eden 区和 Survivor 阅读全文
posted @ 2019-01-26 22:36 黑_子 阅读(245) 评论(0) 推荐(0) 编辑

2019年1月24日

摘要: 引用计数法和可达性分析 垃圾回收,就是将已经分配出去的,但却不在使用的内存回收回来,以便再次分配。在 Java 虚拟机语境下,垃圾指的是死亡的对象所占据的堆空间。下面就总结一下如何如何辨别一个对象是否死亡。 引用计数法:为每一个对象添加一个引用计数器,用来统计指向该对象的引用个数。如果某个对象的引用 阅读全文
posted @ 2019-01-24 19:57 黑_子 阅读(484) 评论(0) 推荐(1) 编辑

2019年1月22日

摘要: Java 创建对象的方式 1:new 语句和反射机制创建。该方式会调用类的构造器,同时满足诸多约束。如果一个类没有构造器的话,Java 编译器会自动添加一个无参数的构造器。子类的构造器需要调用父类的构造器,如果父类存在无参数构造器的话,该调用可以是隐式的。如果父类没有无参数构造器,那么子类的构造器则 阅读全文
posted @ 2019-01-22 22:25 黑_子 阅读(355) 评论(0) 推荐(0) 编辑

2019年1月21日

摘要: Java 中的反射 反射是 Java 语言的一个相当重要的特性,它允许正在运行的 Java 程序观测,甚至是修改程序的动态行为。 我们可以通过 Class 对象枚举该类中的所有方法,还可以通过 Method.SetAccessible 让过 Java 语言的访问权限,在私有方法所在类之外的地方调用该 阅读全文
posted @ 2019-01-21 21:46 黑_子 阅读(712) 评论(0) 推荐(0) 编辑

2019年1月19日

摘要: 在 JAVA 中,异常处理的方式主要是抛出异常和捕获异常。这两大要素共同实现程序控制流的非正常转移。 抛出异常可以分为显示和隐式两种。显示抛出异常的主体是应用程序,它指的是在程序中使用 throw 关键字,手动将异常实例抛出。隐式抛出异常的主题是 Java 虚拟机,它指的是 Java 虚拟机在执行过 阅读全文
posted @ 2019-01-19 20:54 黑_子 阅读(673) 评论(0) 推荐(2) 编辑

2019年1月18日

摘要: 虚方法调用 Java 里所有非私有实例方法调用都会被编译成 invokevirtual 指令,而接口方法调用会被编译成 invokeinterface 指令。这两种指令,均属于 Java 虚拟机中的虚方法调用。 动态绑定:Java 虚拟机需要根据调用者的动态类型,来确定虚方法调用的目标方法。 静态绑 阅读全文
posted @ 2019-01-18 21:59 黑_子 阅读(251) 评论(0) 推荐(0) 编辑

2019年1月17日

摘要: 重载和重写 重载:同一个类中定义名字相同的方法,但是参数类型或者参数个数必须不同。 重载的方法在编译过程中就可完成识别。具体到每一个方法的调用,Java 编译器会根据所传入参数的生命类型来选取重载方法。选取的过程分以下三个阶段: 1:在不考虑对基本类型自动装拆箱,以及可变长参数的情况下选取重载方法。 阅读全文
posted @ 2019-01-17 22:17 黑_子 阅读(596) 评论(0) 推荐(0) 编辑

2019年1月16日

摘要: Java 引用类型 Java 中的引用类型细分为四种:类,接口,数组类和泛型参数。 因为泛型参数会在编译过程中被擦除,所以 Java 虚拟机实际上只有前三种。数组类是由 Java 虚拟机直接生成的,其他两种则有对应的字节流。 无论是数组类还是其他两种类型,Java 虚拟机都需要对其进行链接和初始化。 阅读全文
posted @ 2019-01-16 23:12 黑_子 阅读(439) 评论(0) 推荐(0) 编辑