runtime data area

1.method area(共享)
2.heap  (共享)
3.java stack(非)
4.native method stack(非)
5.program couter register(非)method frame(stack frame)

从heap角度

1.heap      //young gen(eden + survivor0 + survivor 2) + old gen.
2.non-heapperm | metaspace
3.off-heapjvm之外的内容

jvm调优

-Xmx
-Xms
-Xmn        //young
-XX:NewSize=
-XX:MaxNewSize=

java -Xmx xx.x.xx.App

反射

动态访问对象的属性和方法。
Class           //类
Method          //方法,成员函数
Field           //字段,成员变量
Constructor     //构造函数private

Field[] fs = getDeclaredFields() for(Field f : fs){ get + "" }

内省

Introspector.
操作javabean。

设计模式

单例(无状态)
池化模式(无状态)
装饰
适配器
builder
factory
代理模式.

反射技术.

Introspector:       //JavaBean动态访问对象属性和方法。
Class       //
Method      //
Field       //
Constructor //

IO

InputStream     //read
OuputStream     //writeReader          //
Writer          //字符流BufferedInpustStream    //
BufferedOutputStream    //BufferedReader
BufferedWriterInputStreamReader
ObjectInputStream
ObjectOutputStreamByteArrayInputStream
ByteArrayOutputStream

NIO:New IO

ServerSocket ss = new ServerSocket(8888);
//阻塞的
while(true){Socket s = ss.accept();InputStream is = s.getInputStream();//阻塞的while(true){is.read(buf);}...
}

NIO : java.nio.Buffer

[java.nio.Buffer]
容器,线性的,有限的.
Capacity            //容量
limit               //限制
position            //指针位置
mark                //记号(标记)//分配字节缓冲区
ByteBuffer buf = ByteBuffer.allocate(20);       //
ByteBuffer buf = ByteBuffer.allocateDirect(20); //直接内存(离堆)java.nio.ByteBuffer/\|--------------java.nio.HeapByteBuffer         //堆内存区|--------------java.nio.DirectByteBuffer       //离堆内存区.get()   //读put()   //写position()      //取出指针位置position(int )  //设置指针新位置limit()         //设置指针新位置limit(int l)    //设置新limitflip()          //0 <= mark <= position <= limit <= capacity

GC

garbage collection,垃圾回收。
对象回收的条件:没有任何一个指针能够直接或间接达到的话,就回收了。
Person p = new Person();
Person p2 = p ;
p = null ;List<Person> list = new ArrayList<Person>();
list.add(p2);
p2 = null ;list.clear();

ByteBuffer.flip()

java.nio.ByteBuffer中flip、rewind、clear方法的区别

对缓冲区的读写操作首先要知道缓冲区的下限、上限和当前位置。下面这些变量的值对Buffer类中的某些操作有着至关重要的作用:

1. limit:所有对Buffer读写操作都会以limit变量的值作为上限。

2. position:代表对缓冲区进行读写时,当前游标的位置。

3. capacity:代表缓冲区的最大容量(一般新建一个缓冲区的时候,limit的值和capacity的值默认是相等的)。

flip、rewind、clear这三个方法便是用来设置这些值的。

clear方法

public final Buffer clear()
{position = 0; //重置当前读写位置limit = capacity; mark = -1;  //取消标记return this;
}

clear方法将缓冲区清空,一般是在重新写缓冲区时调用。

flip方法

public final Buffer flip() {limit = position;position = 0;mark = -1;return this;
}

反转缓冲区。首先将限制设置为当前位置,然后将位置设置为 0。如果已定义了标记,则丢弃该标记。 常与compact方法一起使用。通常情况下,在准备从缓冲区中读取数据时调用flip方法。

rewind方法

1public final Buffer rewind() {
2 position = 0;
3 mark = -1;
4 return this;
5}

转载于:https://www.cnblogs.com/yihaifutai/p/6787468.html

ByteBuffer相关推荐

  1. Java NIO 之 ByteBuffer()

    2019独角兽企业重金招聘Python工程师标准>>> 名词解释 capacity : 容量,表示缓冲区中最大存储数据的容量.一旦声明不能改变. limit : 界限,表示缓冲区中可 ...

  2. java bytebuffer 大小,bytebuffer 获取长度

    练习题4 ? 问题:对于以下代码: int n=(byteBuffer); //假定n>=0 (); 假定执行(byteBuffer)方法前,byteBuffer的 容量.极限和位置分别为c.l ...

  3. ByteBuffer详解

    2019独角兽企业重金招聘Python工程师标准>>> 在Java nio中,主要有三大组件:Buffer,Channel和Selector.这三者之间的关系可以按照如下方式进行理解 ...

  4. 一条消息是如何按照二进制协议写入到Batch中的ByteBuffer中的

    double-check模式中会将消息放到Batch中: //将消息放到batch中去 FutureRecordMetadata future = Utils.notNull(batch.tryApp ...

  5. 深入理解ByteBuffer

    2019独角兽企业重金招聘Python工程师标准>>> ByteBuffer类是在Java NIO中常常使用的一个缓冲区类,使用它可以进行高效的IO操作,但是,如果对常用方法的理解有 ...

  6. java socket 字节读取_Java SocketChannel 读取ByteBuffer字节的处理模型

    在JAVA中的流分为字节流或字符流,一般来说采用字符流处理起来更加方便.字节流处理起来相对麻烦,SocketChannel中将数据读取到ByteBuffer中,如何取出完整的一行数据(使用CRLF分隔 ...

  7. java bufferarray_如何使用Java的ByteBuffer.arrayOffset()方法

    Returns the offset within this buffer's backing array of the first element of the buffer (optional o ...

  8. 【Java 网络编程】TCP 数据传输示例 ( 客户端参数设置 | 服务器端参数设置 | ByteBuffer 存放读取数据类型 )

    文章目录 I 客户端代码示例 II 服务器端代码示例 III 运行结果 I 客户端代码示例 import java.io.IOException; import java.io.InputStream ...

  9. FileChannel与ByteBuffer的使用示例

    DirectByteBuffer直接内存的使用场景和作用 生命周期长的大对象, 减少java堆GC, 减少内存copy http://www.importnew.com/26334.html 1 pu ...

  10. ByteBuffer支持类型化的put和get。

    package com.atguigu.nio;import java.nio.ByteBuffer;public class NIOByteBufferPutGet {public static v ...

最新文章

  1. centos7 下搭建git服务器
  2. PHP使用BC Math 函数处理浮点运算问题
  3. 6.3 Spring Boot集成mongodb开发
  4. oracle sql developer 出现 : 适配器无法建立连接问题解决方案 The Network Adapter could not establish the connection...
  5. maven私服-详细部署搭建笔记
  6. linux su无效_如何处理Linux中su命令无反应的情况
  7. 【Java】while(scanner.hasNext()){}引发“死循环”的处理方法
  8. 《趣学JavaScript——教孩子学编程》——2.4 Boolean
  9. mysql翻译逗号隔开的字典_【多测师小课堂】python数据类型之列表、字典、元祖、字符串...
  10. 常用js框架,js库
  11. ie7span标签float换行悬浮
  12. Message Unable to connect to SQL Server '(local)'
  13. 解决python写入文件数据不全的问题
  14. 拓展练习--find查找、打包压缩、服务器、磁盘挂载
  15. 手机版wps怎么制作折线图_wps怎么制作目录
  16. 目标客户画像_做营销时,如何做好目标用户群体画像?
  17. C# 打开和关闭软键盘
  18. Pray for 京阿尼——愿逝者安息,伤者早日康复
  19. 刘同——谁的青春不迷茫,给你冬日满满正能量
  20. Android调用新版百度天气api,解决地理编码问题

热门文章

  1. LVS(4)——规则相关操作
  2. caffe训练输入数据格式介绍(LMDB/imagelist)
  3. VC6.0 DLL项目与WINDOWS项目的转换
  4. springboot使用redisTemplate 报错:APP FAILED TO START Field template in required a single bean redis工具类
  5. Android 使用SWIG生成Jni代码
  6. CF-196 D.The Next Good String(hash)
  7. 离散数学及其应用上的一个问题
  8. UEFI下用rufus安装ubuntu16.04 LTS
  9. Linux下的/bin、/sbin、/usr/bin、/usr/sbin目录
  10. redis3.0 java spring_spring整合redis以及使用RedisTemplate的方法