java allocatedirect_java – ByteBuffer.allocateDirect()和MappedByteBuffer.load()之间的区别
我试图通过使用MappedByteBuffer对特定文件进行内存映射来实现两个或多个JVM之间的一种共享缓存.从规范我看到当我们使用MappedByteBuffer.load()它应该将数据加载到直接缓冲区.我有几个问题.
我的代码片段::
RandomAccessFile file = new RandomAccessFile("file.txt","rw");
FileChannel fc = file.getChannel();
MappedByteBuffer buf5 = fc.map(MapMode.READ_WRITE, 0, fc.size());
//ByteBuffer buf6 = ByteBuffer.allocateDirect(100000000);
buf5.load();
try
{
Class c = Class.forName("java.nio.Bits");
Field f = c.getDeclaredField("reservedMemory");
f.setAccessible(true);
long reservedMemory = f.getLong(null);
f = c.getDeclaredField("maxMemory");
f.setAccessible(true);
System.out.println(
"Direct Memory Usage: "+ reservedMemory +"/"+ f.getLong(null)+"\n");
}
catch (Throwable t)
{
}
>直接内存使用(File.txt为1 GB),上述代码的输出为0字节.但如果我取消注释线
ByteBuffer buf6 = ByteBuffer.allocateDirect(100000000);
我直接使用内存100MB.不明白为什么这样,为什么我没有得到任何直接的内存使用在第一位(即当该行被注释掉)
>尽管上述代码的直接内存使用率为0 B,但我确实看到,进程的驻留内存(使用unix top)增加了1 GB.但是如果我在框上做了一个“free -m”,我看不到内存使用量的增加.
在这两种情况下,我对于内存结束的地方有些困惑.
谢谢!
java allocatedirect_java – ByteBuffer.allocateDirect()和MappedByteBuffer.load()之间的区别相关推荐
- java allocatedirect_ByteBuffer.allocateDirect()和MappedByteBuffer.load()之间的区别
我试图通过使用MappedByteBuffer映射特定文件的内存实现两个或多个JVM之间的共享缓存.从规范中我看到,当我们使用MappedByteBuffer.load()时,它应该将数据加载到直接缓 ...
- java byte 释放内存_java java.nio.ByteBuffer.allocateDirect 导致内存泄露
java能够经过java.nio.ByteBuffer.allocateDirect(capacity)直接运用non java heap(java堆外)的内存 . 一.运用意图: 1.拓荒数据缓冲区 ...
- java和python的web自动化有什么区别-Java Web开发和Python Web开发之间的区别
今天的文章讨论了Java Web开发和Python Web开发之间的区别.我不鼓励我们在这里从Java Web迁移到Python Web开发.我只是想谈谈我的感受.它不一定适合所有情况,仅供我们参考. ...
- 解析java中方法的重载和重写之间的区别与联系
解析java中方法的重载和重写之间的区别与联系 1 不同点 1.1 方法重写是在不同的类中(父子类),方法重载是在同一类中 1.2 方法重载最初的目的是构造方法的多样化,方法重写的目的是让重写的方法满 ...
- java使用ByteBuffer.allocateDirect分配的堆外内存大小查看方法
一.问题 在java开发中,可以使用ByteBuffer.allocateDirect分配的堆外内存,那么对一个java程序来说,如何实时查看进程的堆外内存大小呢? 二.本机进程 1.使用Jvisua ...
- java ordered list_关于并行处理:Java 8的forEachOrdered()和sequence()方法之间的区别?...
我正在使用Java 8并行流,并且希望以并行流的方式打印元素是某种顺序(例如插入顺序,反向顺序或顺序顺序). 为此,我尝试了以下代码: System.out.println("With fo ...
- java executequery_java execute、executeQuery和executeUpdate之间的区别
在用纯JSP做一个页面报警功能的时候习惯性的用executeQuery来执行SQL语句,结果执行update时就遇到问题,语句能执行,但返回结果出现问题,另外还忽略了executeUpdate的返回值 ...
- rake db:migrate db:reset和db:schema:load之间的区别
本文翻译自:Difference between rake db:migrate db:reset and db:schema:load The difference between rake db: ...
- Java中的frontcolor_关于java:Color.red和Color.RED之间的区别
setXxx(Color.red)和setXxx(Color.red)的定义之间的真正区别是什么? 我在网上找到了以下解释. 这是关于命名约定的吗? Java originally defined a ...
最新文章
- Codeforces Round #352 (Div. 2) A. Summer Camp 水题
- 怎么点亮段码屏_段码液晶屏有鬼影怎么处理?
- 8除以2表示什么意思_平均配速8'12'是什么意思
- python http协议获取对方的ip地址_http协议(一)基础知识
- C++(3)--编译、gdb调试
- 如何选择高性能的数据分析工具,你需要看看数据架构的进化史!
- Python不再为字符集编码发愁,使用chardet轻松解决你的困扰。
- Dell服务器通过IDRAC9收集TSR日志排查故障
- 10- monkey日志分析
- 编译OpenJDK12:Only bundled freetype can be specified on Mac and Windows
- QAbstractItemModel+qtreeview
- Android studio实现语音转文字功能
- MATLAB-箱图和箱图IQR分析
- HDU 6438-Buy and Resell
- vc调用浏览器打开指定网址页面
- 政治正确的睡前故事(4则)【搬运】【破事水】
- 算法高级(42)-大数定律-澳门皇家菠菜,为什么你逢赌必输?
- jquery获取复选框checkbox被选中的值
- 关于dnw驱动安装失败的问题解决
- 基于OpenCV 的美颜相机推送直播流