java.nio之缓冲区

缓冲区(也即Buffer)是包在一个对象内的基本数据元素数组。Buffer相比一个简单数组的优点是它将关于数据的数据内容和信息包含在一个单一的对象中。其定义的接口有:

buffer

Buffer有四个属性对理解其API的使用来说非常重要:

(1) 容量(Capacity)

缓冲区能容纳的数据元素的最大数量,capacity在创建时被设定,且不能改变。

 

(2) 上界(Limit)

缓冲区中现有元素的计数,也即现有缓冲区的第一个不能被读写的元素。

&[......]

Read more

Posted in 读书笔记 | Tagged | Leave a comment

Tomcat源码走读——内存泄露检测

Tomcat7提供了对内存泄露的检测,其实现放在Web的类加载器WebappClassLoader中进行。在加载器停止时(也即stop函数中)执行内存泄露的检测。

  /**
     * 清除引用,防止内存泄露
     */
    protected void clearReferences() {

      /**
       * 销毁注册的JDBC驱动
       */
        clearReferencesJdbc();

        /**[......]

Read more

Posted in J2EE | Tagged | Leave a comment

Tomcat走读——JMX实现

JMX提供了管理和监控应用程序和服务的功能,对于Tomcat中的核心对象,都暴露了响应的属性和操作。可通过jconsole等工具查看下,如:

可以看到 ,Connnector,Engine,Host,ThreadPool等等这些都暴露了一些有用的属性和操作。

jmx

JMX MBeans都在Tomcat的各个生命周期管理函数中完成,其核心实现类是LifecycleMBeanBase,在对象初始化时进行注册,在对象销毁时删除。注册函数如:

   protected final Obj[......]

Read more

Posted in J2EE | Tagged | Leave a comment

Java单例模式实现中的双重检查锁

 

译文,原文出自:Double Checked Locking on Singleton Class in Java

 

单例类在Java开发者中应用非常普遍,但它给初级开发者带来了相当多的挑战。他们要面对的其中一个挑战便是让一个单例类保持唯一?比如说保持一个单例类在任何情况下都不会多次实例化。双重检查锁(Double Checked Locking)是一种确保整个应用的生命周期中只有一个单例类的实例的方式。正如其名字一样,在双重检查锁的实现方式中,要对一[......]

Read more

Posted in Java | Tagged | Leave a comment