Java语法细节 - 内存和枚举
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语法细节 - 内存和枚举的更多相关文章
- JAVA语法细节(1)
1.变量的作用域 变量的作用域从变量定义的位置开始,到变量所在的那对大括号结束.变量定义内存开辟一块空间用于该变量,变量到达作用域时,该变量从内存中消失. 2.变量的数据类型 变量基本数据类型:byt ...
- Java语法细节 - synchronized和volatile
目录 synchronized关键字 关键字volatile synchronized关键字 synchronized关键字锁住方法和this的不同之处: public synchronized vo ...
- Java语法细节 - 可见性
目录 JAVA访问和修饰符的关系一览表 JAVA访问和修饰符的关系一览表 Modifier Class Package Subclass World public Y Y Y Y protected ...
- Java语法细节(2)
1.逻辑运算符 &和&&,|和||的区别 &&:和&的结果是一样的,但运算过程有区别 &&:只要左边结果为假,就不再执行右边的,结果为假 ...
- Java语法细节 - try_finally和set相关
目录 try-catch-finally的关系 TreeSet和HashSet的实现原理和区别 BigDecimal中的一些坑 当BigDecimal在HashSet/HashMap和TreeSet/ ...
- java语法糖---枚举
java语法糖---枚举 在JDK5.0中提供了大量的语法糖,例如:自动装箱拆箱.增强for循环.枚举.泛型等.所谓“语法糖”就是指提供更便利的语法供程序员使用,只是在编译器上做了手脚,却没有提供 ...
- java程序的内存分配
java程序的内存分配 JAVA 文件编译执行与虚拟机(JVM)介绍 Java 虚拟机(JVM)是可运行Java代码的假想计算机.只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的 ...
- Java语法知识总结
一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名为Java: ...
- 【Java学习系列】第2课--Java语法及面向对象
本文地址 分享提纲: 1. Java程序特点 1.1 基本语法 1.2 字符串 1.3 变量 1.4 Java数组 1.5 Java枚举 1.6 Java修饰符 1.7 Java编译制定在制定目录 2 ...
随机推荐
- 自己写的一个用js把select换成div与span与ul的东西
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,guava限流,定时任务案例, 发邮件
本文介绍spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,定时任务案例 集成swagger--对于做前后端分离的项目,后端只需要提供接口访问,swagger提供了接口 ...
- 20175214 《Java程序设计》第9周学习总结
20175214 <Java程序设计>第9周学习总结 本周学习任务总结 1.根据<java2实用教程>和蓝墨云学习视频学习第十一章: 2.尝试将课本重点内容用自己的话复述手打: ...
- CocoaLumberjack——带颜色的Log
CocoaLumberjack可以带颜色Log,具体的好处嘛,谁用谁知道,:] 具体步骤如下: 1. 安装XcodeColors插件 下载地址:https://github.com/robbiehan ...
- Beta 冲刺(5/7)
目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:beta冲刺(5/7) 团队部分 后敬甲(组长) 过去两天完成了哪些任务 ppt制作中 数据集标注 接下来的计划 制作p ...
- 【Selenium】各浏览器(firefox,chrome,ie)驱动下载地址汇总
前两天使用Selenium分布式时,总抛出异常.更新成最新驱动可以解决.其中chrome异常如下, "platform": "WINDOWS" File &qu ...
- USACO Training Section 1.1 题解(共4题)
第一题 题目传送门:你的飞碟在这儿 分析 水题一道,输入两个字符串,将它们转换为数字并同时相乘,然后判断一下它们是不是对于47同余就可以了. 代码 #include<bits/stdc++.h& ...
- ubuntu系统的teamviewer的安装及使用
参考链接: 安装: https://blog.csdn.net/weixin_34613450/article/details/80541799 使用: https://jingyan.baidu.c ...
- 【java】Java组件概览(2)— 基本库
1.Math Math相关的库包括包括浮点库(java.lang.Math和java.lang.StrictMath)和任意精度数学(java.math包). (1)java.lang.Math 该类 ...
- Linux安装docker
1.检查内核版本,必须是3.10及以上 uname ‐r 2.安装docker yum install docker 3.输入y确认安装 4.启动docker [root@localhost ~]# ...