Java
on_1y
这个作者很懒,什么都没留下…
展开
-
使用JVMTI获取Java多线程程序指令执行次序
在Java多线程程序中,由于线程调度,指令间的次序在每次运行时都可能不相同,有时候,我们需要得到指令次序,用来分析程序的行为。这样细粒度的底层行为用一般方法很难完成,我们需要借助 JVM Tool Interface,即JVMTI,来帮助我们获取Java虚拟机执行时的信息。本文先介绍编写JVMTI程序的基本框架,然后介绍如何使用JVMTI来获取多线程程序中指令之间的次序。原创 2014-04-28 18:13:48 · 3658 阅读 · 0 评论 -
OpenJDK 源代码阅读之 Collections
概要代码路径为: jdk/src/share/classes/java/util/Collections.java类继承关系java.lang.Object java.util.Collections定义public class Collectionsextends Object实现sortpublic stati原创 2014-06-08 19:44:40 · 2201 阅读 · 0 评论 -
OpenJDK 源代码阅读之 BitSet
概要类继承关系java.lang.Object java.util.BitSet定义public class BitSetextends Objectimplements Cloneable, Serializable要点BitSet 类用来支持位操作,给它一个 size ,就会返回一个对象,代表 size 个位。可以完成“与原创 2014-06-07 19:42:51 · 1442 阅读 · 0 评论 -
开始OpenJDK源代码阅读
开始OpenJDK源代码阅读在阅读了一周的 OpenJDK 源代码后,我才写这篇文章。因为除非你已经开始阅读,否则是不知道自己是不是应该读下去的。所以,不要贸然说自己要干嘛,先做一段时间,觉得感觉还好,再决定做下去。这一周,主要是看 java.util 中和容器相关的几个文件,虽然还没看太多,但是已经有一些收获了。看到了以前学过的数据结构在Java的标准库中是如何被实现的。也明原创 2014-05-27 20:42:03 · 7499 阅读 · 2 评论 -
OpenJDK 源代码阅读之 TreeMap
概要类继承关系java.lang.Object java.util.AbstractMap java.util.HashMap定义public class TreeMap extends AbstractMap implements NavigableMap, Cloneable, java.io.Serializable原创 2014-05-27 20:46:49 · 2542 阅读 · 0 评论 -
OpenJDK 源代码阅读之 HashMap
概要类继承关系java.lang.Object java.util.AbstractMap java.util.HashMap定义public class TreeMapextends AbstractMapimplements NavigableMap, Cloneable, Serializable要点1) 与 Hasht原创 2014-05-27 20:50:05 · 1975 阅读 · 0 评论 -
OpenJDK 源代码阅读之 String
概要类继承关系java.lang.Object java.lang.String定义public final class Stringextends Objectimplements Serializable, ComparableString>, CharSequence要点一旦创建就不可改变实现storage原创 2014-05-28 17:01:11 · 3164 阅读 · 2 评论 -
OpenJDK 源代码阅读之 ArrayList
概要类继承关系java.lang.Object java.util.AbstractCollection java.util.AbstractList java.util.ArrayList定义public class ArrayListE> extends AbstractListE> implemen原创 2014-05-28 17:03:23 · 1932 阅读 · 0 评论 -
OpenJDK 源代码阅读之 LinkedList
概要类继承关系java.lang.Object java.util.AbstractCollection java.util.AbstractList java.util.AbstractSequentialList java.util.LinkedList定义public class L原创 2014-05-30 17:35:31 · 2101 阅读 · 5 评论 -
OpenJDK 源代阅读之 ArrayDeque
概要类继承关系java.lang.Object java.util.AbstractCollectionE> java.util.ArrayDequeE>定义public class ArrayDequeE>extends AbstractCollectionE>implements DequeE>, Cloneable, Seri原创 2014-06-04 19:26:20 · 1490 阅读 · 0 评论 -
OpenJDK 源代码阅读之 TimSort
概要这个类在 Oracle 的官方文档里是查不到的,但是确实在 OpenJDK 的源代码里出现了,Arrays 中的 sort 函数用到了这个用于排序的类。它将归并排序(merge sort) 与插入排序(insertion sort) 结合,并进行了一些优化。对于已经部分排序的数组,时间复杂度远低于 O(n log(n)),最好可达 O(n),对于随机排序的数组,时间复杂度为 O(n原创 2014-06-11 21:32:39 · 10116 阅读 · 7 评论 -
Java IO机制
介绍了Java的IO机制,包括基于流的字节IO,字符IO中各种类的作用; 同时介绍了新IO中的重要概念,包含Buffer原理,Channel与Buffer如何配合使用,Selector与Channel如何配合使用,以及内存映射文件,文件锁。原创 2014-09-25 20:21:50 · 4688 阅读 · 1 评论 -
生产环境 JDK6 升级 JDK8
由于 Oracle 已经不对 JDK6 和 JDK7 进行支持,同时为了利用 G1 收集器。所以我们在生产环境中,将项目从 JDK6 升级至 JDK8,并将垃圾收集器由 CMS 换成了 G1。下面对这次升级作一个总结,并且给出一些大家可能需要用到的资源。原创 2016-02-11 13:03:36 · 8738 阅读 · 0 评论 -
OpenJDK 源码阅读之 Java 字节流输入类的实现
简要分析了 OpenJDK 的Java IO 中,字节流输入系列的8个类的源代码实现,给出了Java IO的基本设计思路。原创 2014-07-11 20:07:50 · 3220 阅读 · 0 评论 -
OpenJDK 源码阅读之 Java 字节流输出类的实现
通过阅读 OpenJDK 源代码,描述了 Java IO 中,字节输出系列6个类的实现方式,并简单介绍了与压缩解压缩相关的几个类。原创 2014-07-12 20:00:27 · 2785 阅读 · 0 评论 -
在Ubuntu 12.04 上编译调试 OpenJDK8
介绍如何在 ubuntu 12.04 上下载 openjdk8 代码,并编译,调试。原创 2014-08-22 20:34:08 · 11786 阅读 · 2 评论 -
Java虚拟机的启动与程序的运行
从 openjdk8 源代码的角度, 介绍了 java.exe 如何启动虚拟机并执行Java程序的过程。原创 2014-08-22 20:37:09 · 10269 阅读 · 0 评论 -
对 Java 内存模型的理解
阐述了自己对 Java 语言规范中内存模型的理解,介绍了之前较少被提及的 Causality Requirements.原创 2014-08-17 21:24:30 · 2914 阅读 · 0 评论 -
Java 虚拟机内部类静态字段的初始化与访问
从 HotSpot 源代码的角度,阐述了虚拟机内部是如何创建,表示一个 Java 类的,静态变量存储在哪里,如何初始化,虚拟机如何访问到这些静态变量。并给出实验佐证。原创 2014-09-04 17:14:03 · 4570 阅读 · 0 评论 -
Java 中的垃圾回收策略
介绍了 Java 虚拟机中,如何判断一个对象是否存活,各种垃圾回收算法的原理,以及HotSpot中的各种垃圾回收器的特点。原创 2014-08-28 17:01:15 · 6175 阅读 · 1 评论 -
JVMTI 中的JNI系列函数,线程安全及调试技巧
主要写了使用 JVMTI 中需要的几个关键问题,包括 jni functions 的使用,线程安全,调试技巧。原创 2015-03-15 11:34:54 · 4039 阅读 · 0 评论 -
JDK8 中的类型推断与重载解析
通过一个例子,从 javac 源代码的角度解析了 JDK6 与 JDK8 在类型推断与重载解析方面的不同。原创 2016-02-10 17:32:17 · 4163 阅读 · 2 评论 -
OpenJDK 源代码阅读之 Arrays
概要类继承关系java.lang.Objectjava.util.Arrays定义public class Arraysextends Object要点此类主要是提供了一些操作数组的方法,比如排序啊,搜索啊。也提供一个工厂,用于将数组当成一个 List。实现quick sortpublic static voi原创 2014-06-05 20:44:58 · 1572 阅读 · 0 评论