我试图通过使用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()之间的区别相关推荐

  1. java allocatedirect_ByteBuffer.allocateDirect()和MappedByteBuffer.load()之间的区别

    我试图通过使用MappedByteBuffer映射特定文件的内存实现两个或多个JVM之间的共享缓存.从规范中我看到,当我们使用MappedByteBuffer.load()时,它应该将数据加载到直接缓 ...

  2. java byte 释放内存_java java.nio.ByteBuffer.allocateDirect 导致内存泄露

    java能够经过java.nio.ByteBuffer.allocateDirect(capacity)直接运用non java heap(java堆外)的内存 . 一.运用意图: 1.拓荒数据缓冲区 ...

  3. java和python的web自动化有什么区别-Java Web开发和Python Web开发之间的区别

    今天的文章讨论了Java Web开发和Python Web开发之间的区别.我不鼓励我们在这里从Java Web迁移到Python Web开发.我只是想谈谈我的感受.它不一定适合所有情况,仅供我们参考. ...

  4. 解析java中方法的重载和重写之间的区别与联系

    解析java中方法的重载和重写之间的区别与联系 1 不同点 1.1 方法重写是在不同的类中(父子类),方法重载是在同一类中 1.2 方法重载最初的目的是构造方法的多样化,方法重写的目的是让重写的方法满 ...

  5. java使用ByteBuffer.allocateDirect分配的堆外内存大小查看方法

    一.问题 在java开发中,可以使用ByteBuffer.allocateDirect分配的堆外内存,那么对一个java程序来说,如何实时查看进程的堆外内存大小呢? 二.本机进程 1.使用Jvisua ...

  6. java ordered list_关于并行处理:Java 8的forEachOrdered()和sequence()方法之间的区别?...

    我正在使用Java 8并行流,并且希望以并行流的方式打印元素是某种顺序(例如插入顺序,反向顺序或顺序顺序). 为此,我尝试了以下代码: System.out.println("With fo ...

  7. java executequery_java execute、executeQuery和executeUpdate之间的区别

    在用纯JSP做一个页面报警功能的时候习惯性的用executeQuery来执行SQL语句,结果执行update时就遇到问题,语句能执行,但返回结果出现问题,另外还忽略了executeUpdate的返回值 ...

  8. rake db:migrate db:reset和db:schema:load之间的区别

    本文翻译自:Difference between rake db:migrate db:reset and db:schema:load The difference between rake db: ...

  9. Java中的frontcolor_关于java:Color.red和Color.RED之间的区别

    setXxx(Color.red)和setXxx(Color.red)的定义之间的真正区别是什么? 我在网上找到了以下解释. 这是关于命名约定的吗? Java originally defined a ...

最新文章

  1. Codeforces Round #352 (Div. 2) A. Summer Camp 水题
  2. 怎么点亮段码屏_段码液晶屏有鬼影怎么处理?
  3. 8除以2表示什么意思_平均配速8'12'是什么意思
  4. python http协议获取对方的ip地址_http协议(一)基础知识
  5. C++(3)--编译、gdb调试
  6. 如何选择高性能的数据分析工具,你需要看看数据架构的进化史!
  7. Python不再为字符集编码发愁,使用chardet轻松解决你的困扰。
  8. Dell服务器通过IDRAC9收集TSR日志排查故障
  9. 10- monkey日志分析
  10. 编译OpenJDK12:Only bundled freetype can be specified on Mac and Windows
  11. QAbstractItemModel+qtreeview
  12. Android studio实现语音转文字功能
  13. MATLAB-箱图和箱图IQR分析
  14. HDU 6438-Buy and Resell
  15. vc调用浏览器打开指定网址页面
  16. 政治正确的睡前故事(4则)【搬运】【破事水】
  17. 算法高级(42)-大数定律-澳门皇家菠菜,为什么你逢赌必输?
  18. jquery获取复选框checkbox被选中的值
  19. 关于dnw驱动安装失败的问题解决
  20. 基于OpenCV 的美颜相机推送直播流

热门文章

  1. fastjson依赖
  2. 正则表达式 (正则表达式括号的作用)
  3. 生活随记-越来越美好
  4. webservice文件上传下载
  5. 详解Visual Studio 2010中ASP.NET新增23项功能
  6. 【设计】OOA、OOD、OOP
  7. 干掉ctfmon.exe
  8. python 归纳 (九)_html解析-lxml
  9. kettle运行spoon.bat时找不到javaw文件 bug报错
  10. 常用贴片三极管型号与丝印的对应关系(SOT23)