Java申请DirectBuffer

/*-------JAVA直接操作内存-------------

   * 申请100m的直接内存,不会申请在java堆上面

   * 打开资源管理器可以看到内存占用会增加100m,但是java堆上的内存却没有增加!

   */

ByteBuffer buffer = ByteBuffer.allocateDirect(100 * 1024 * 1024);

System.out.println("------------------start----------------------");

Thread.sleep(10 * 1000);

// 清理刚刚申请的内存
((DirectBuffer)(buffer)).cleaner().clean(); System.out.println("------------------end----------------------");

ByteBuffer的position,limit,capacity,flip操作之间的关系

以下面的代码为例

/**

* 描述:测试ByteBuffer的相关操作

* position:写模式下当前写的位置,读模式下当前读的位置

* limit:写模式下能写多少数据,读模式下能读多少数据

* capacity:即byteBuffer的总大小,不区分读写

* flip:将limit置为position,position置为0,一般用于写完之后开始进行读取

*/

   privatestaticvoid testByteBufferOperation() throws InterruptedException

   {
ByteBuffer buffer = ByteBuffer.allocate(20); buffer.putInt(123); //java 1个int 4个字节 //默认limit和capacity的值是相同的,第一次put之后,position移动到当前写的位置
System.out.println("*************initial status***************");
System.out.println("position:" + buffer.position() + "\nlimit:" + buffer.limit() + "\n"
+ "capacity:" + buffer.capacity()); //flip之后,limit变为position,position置为0
buffer.flip();
System.out.println("*************after flip***************");
System.out.println("position:" + buffer.position() + "\nlimit:" + buffer.limit() + "\n"
+ "capacity:" + buffer.capacity()); //get之后,position移动1位,其他不变
buffer.get();
System.out.println("*************after first get***************");
System.out.println("position:" + buffer.position() + "\nlimit:" + buffer.limit() + "\n"
+ "capacity:" + buffer.capacity());
}

枚举实现单例模式

/*

 * 枚举实现单例,一方面保证了线程安全,另一方面会“免费”得到了序列化的功能
*/ publicenum ChildEnum {
//枚举里面默认的实例
INSTANCE;
private Child childInstance; private ChildEnum()
{
childInstance = new Child();
} public Child getInstance()
{
returnchildInstance;
}
}

Java语法细节 - 内存和枚举的更多相关文章

  1. JAVA语法细节(1)

    1.变量的作用域 变量的作用域从变量定义的位置开始,到变量所在的那对大括号结束.变量定义内存开辟一块空间用于该变量,变量到达作用域时,该变量从内存中消失. 2.变量的数据类型 变量基本数据类型:byt ...

  2. Java语法细节 - synchronized和volatile

    目录 synchronized关键字 关键字volatile synchronized关键字 synchronized关键字锁住方法和this的不同之处: public synchronized vo ...

  3. Java语法细节 - 可见性

    目录 JAVA访问和修饰符的关系一览表 JAVA访问和修饰符的关系一览表 Modifier Class Package Subclass World public Y Y Y Y protected ...

  4. Java语法细节(2)

    1.逻辑运算符 &和&&,|和||的区别 &&:和&的结果是一样的,但运算过程有区别 &&:只要左边结果为假,就不再执行右边的,结果为假 ...

  5. Java语法细节 - try_finally和set相关

    目录 try-catch-finally的关系 TreeSet和HashSet的实现原理和区别 BigDecimal中的一些坑 当BigDecimal在HashSet/HashMap和TreeSet/ ...

  6. java语法糖---枚举

    java语法糖---枚举   在JDK5.0中提供了大量的语法糖,例如:自动装箱拆箱.增强for循环.枚举.泛型等.所谓“语法糖”就是指提供更便利的语法供程序员使用,只是在编译器上做了手脚,却没有提供 ...

  7. java程序的内存分配

    java程序的内存分配 JAVA 文件编译执行与虚拟机(JVM)介绍 Java 虚拟机(JVM)是可运行Java代码的假想计算机.只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的 ...

  8. Java语法知识总结

    一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名为Java: ...

  9. 【Java学习系列】第2课--Java语法及面向对象

    本文地址 分享提纲: 1. Java程序特点 1.1 基本语法 1.2 字符串 1.3 变量 1.4 Java数组 1.5 Java枚举 1.6 Java修饰符 1.7 Java编译制定在制定目录 2 ...

随机推荐

  1. springboot中使用kindeditor富文本编辑器实现博客功能

    kindeditor在之前已经用过,现在在springboot项目中使用.并且也在里面使用了图片上传以及回显等功能. 其实主要的功能是图片的处理:kindeditor对输入的内容会作为html标签处理 ...

  2. java操作mongodb & springboot整合mongodb

    简单的研究原生API操作MongoDB以及封装的工具类操作,最后也会研究整合spring之后作为dao层的完整的操作. 1.原生的API操作 pom.xml <!-- https://mvnre ...

  3. Ubuntu下使用Sublime Text 3配置Python开发环境

    因为电脑配置有些低端,所以只能使用Sublime来当作Python的IDE. 1.下载Sublime Text 3并安装 首先去官网找到64位的.tar.bz2的压缩文件下载: 使用命令或归档管理器将 ...

  4. MQTT控制---subscribe

    连接服务端 客户端向服务端发送SUBSCRIBE报文用于创建一个或多个订阅. 固定报头 报头长度:2 Bytes 1.报头控制类型(0x82) 报文SUBSCRIBE控制报固定报头的第3.2.1.0位 ...

  5. 六 java和Tomcat

    Java企业级应用TOMCAT实战 http://blog.oldboyedu.com/java-tomcat/ 老男孩笔记 常规应用架构模型 Tomcat对静态请求效率低,可以做动静分离,动态的给T ...

  6. AFNetWroking 3.0 GET&POST基本使用

    ``` - (void)requestWithUrl:(NSString *)url params:(NSDictionary *)params methodType:(NSString *)meth ...

  7. PADS Layout VX.2.3 制作PCB封装(Decal)时,导入DXF文件

    操作系统:Windows 10 x64 工具1:PADS Layout VX.2.3 进入PCB封装编辑器(Decal Editor),点击Drafting Toolbar > Import D ...

  8. vue使用过滤器利用moment实现日期的格式化

    import moment  from 'moment' 定义局部 filters:{ dateString:function(value,format){ console.log(value,for ...

  9. css设置多列等高布局

    初始时,多个列内容大小不同,高度不同.现在需要设置不同的背景来显示,而且各个列的高度需要保持一致.那么这就需要利用到多列等高布局. 最终需要的效果: 1. 真实等高布局 flex 技术点:弹性盒子布局 ...

  10. tensorflow优化器-【老鱼学tensorflow】

    tensorflow中的优化器主要是各种求解方程的方法,我们知道求解非线性方程有各种方法,比如二分法.牛顿法.割线法等,类似的,tensorflow中的优化器也只是在求解方程时的各种方法. 比较常用的 ...