08 2012 档案

摘要:选择器的作用 《Java NIO》上面的例子感觉有点晦涩,个人觉得Selector就像一条传送带一样,很多商品(Channel)通过传送带传过来,在另一端很多人(多个线程)在分拣处理。 选择器提供了询问是否已经准备好执行每个I/O的操作能力。例如我们需要了解一个SocketChannel对象是否还有更多的字节需要读取,或者我们需要知道ServerSocketChannel是否有需要准备接受的... 阅读全文
posted @ 2012-08-23 22:14 Cratical 阅读(1343) 评论(0) 推荐(0)
摘要:个人感觉通道就像传送带一样,这边把数据包装一下里往带子上一放,另一头就收到了,在这个例子中,包装就是数据扔到Buffer中得过程,传送的载体就是Channel。 基础 Channel接口就俩操作isOpen()查看状态,close()关闭。 通道分两大类,文件通道和Socket通道,后者有相关的工厂方法(open),前者只能通过RandomAccessFile,FileInputStream和... 阅读全文
posted @ 2012-08-22 13:14 Cratical 阅读(1231) 评论(0) 推荐(0)
摘要:缓冲区基础 缓冲区说白了就是一个包装后的数组,有一组API,有一些公共和私有的属性 任何缓冲区都有下面的属性: 容量(capacity),缓冲区大小限制(limit),第一个不应被读取或写入的字节的索引,总是小于容量。位置(position),下一个被读取或写入的字节的索引,总是小于限制。 标记(mark),一个备忘位置,调用mark()来设定mark=position 四个属性遵循0<=mar... 阅读全文
posted @ 2012-08-22 10:44 Cratical 阅读(427) 评论(0) 推荐(0)
摘要:堆溢出 会出现java.lang.OutOfMemoryError,紧接着还会跟一条Java heap space,at… 先通过内存映像分析工具堆dump出来的堆快照分析,分清楚是内存泄漏还是内存溢出 对于内存泄漏,查一下GC Roots的引用链,掌握泄露对象的类型信息及GC Roots引用链的信息,定位出问题的地方 对于内存溢出,看看-Xms和-Xmx,看看能不能调大,从代码上检查是否有些对... 阅读全文
posted @ 2012-08-22 09:34 Cratical 阅读(3024) 评论(0) 推荐(0)
摘要:Java在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途、创建和销毁的时间,有一些是随虚拟机的启动而创建,随虚拟机的退出而销毁,有些则是与线程一一对应,随线程的开始和结束而创建和销毁。Java虚拟机所管理的内存将会包括以下几个运行时数据区域程序计数器(Program Counter Register)它是一块较小的内存空间,它的作用可以看做是当先线程所执行的字节码的信号指示器。每一条JVM线程都有自己的PC寄存器,各条线程之间互不影响,独立存储,这类内存区域被称为“线程私有”内存在任意时刻,一条JVM线程只会执行一个方法的代码。该方法称为该线程的当 阅读全文
posted @ 2012-08-21 23:11 Cratical 阅读(10386) 评论(0) 推荐(1)