当前位置: 首页 > news >正文

动态网站开发考证答案线下推广渠道有哪些方式

动态网站开发考证答案,线下推广渠道有哪些方式,厦门 外贸公司做网站,济南网站制作软件文章目录 一、什么是直接内存?二、特点三、使用案例四、直接内存的管理 一、什么是直接内存? Direct Memory:系统内存 普通IO,运行原理图 磁盘到系统内存,系统内存到jvm内存。 NIO,运行原理图 划分了一块…

文章目录

  • 一、什么是直接内存?
  • 二、特点
  • 三、使用案例
  • 四、直接内存的管理

一、什么是直接内存?

Direct Memory:系统内存

普通IO,运行原理图
磁盘到系统内存,系统内存到jvm内存。
在这里插入图片描述
NIO,运行原理图
划分了一块区域,JVM和系统共享的内存区间,这样,就减少了一次IO操作。
在这里插入图片描述

二、特点

常见于 NIO 操作时,用于数据缓冲区
分配回收成本较高,但读写性能高
不受 JVM 内存回收管理

所以,我们可以在IO程序中,使用直接内存来优化程序的读写性能。

三、使用案例

关键代码:ByteBuffer.allocateDirect(_1Mb);

public class Demo1_9 {static final String FROM = "E:\\sbPSjI4tt10.mp4";static final String TO = "E:\\a.mp4";static final int _1Mb = 1024 * 1024;public static void main(String[] args) {io(); // io 用时:1535.586957 1766.963399 1359.240226directBuffer(); // directBuffer 用时:479.295165 702.291454 562.56592}private static void directBuffer() {long start = System.nanoTime();try (FileChannel from = new FileInputStream(FROM).getChannel();FileChannel to = new FileOutputStream(TO).getChannel();) {ByteBuffer bb = ByteBuffer.allocateDirect(_1Mb);while (true) {int len = from.read(bb);if (len == -1) {break;}bb.flip();to.write(bb);bb.clear();}} catch (IOException e) {e.printStackTrace();}long end = System.nanoTime();System.out.println("directBuffer 用时:" + (end - start) / 1000_000.0);}private static void io() {long start = System.nanoTime();try (FileInputStream from = new FileInputStream(FROM);FileOutputStream to = new FileOutputStream(TO);) {byte[] buf = new byte[_1Mb];while (true) {int len = from.read(buf);if (len == -1) {break;}to.write(buf, 0, len);}} catch (IOException e) {e.printStackTrace();}long end = System.nanoTime();System.out.println("io 用时:" + (end - start) / 1000_000.0);}
}

但是,直接内存,是不受JVM管理的
另外,我们显示调用gcJVM也不是立马就执行gc

而且,一般我们会在项目中禁用显示调用gc,因为,Full GC影响性能。
禁用参数:-XX:+DisableExplicitGC

四、直接内存的管理

底层是如何回收直接内存的?

  • 使用了 Unsafe 对象完成直接内存的分配回收,并且回收需要主动调用 freeMemory 方法
  • ByteBuffer 的实现类内部,使用了 Cleaner (虚引用)来监测 ByteBuffer 对象,一旦
    ByteBuffer 对象被垃圾回收,那么就会由 ReferenceHandler 线程通过 Cleanerclean 方法调
    freeMemory 来释放直接内存
    在这里插入图片描述
    我们知道,不建议程序员显示调用gc,来回收JVM对象。
    但是,等待JVM自主的Full GC,又是不确定的。
    所以,还是,建议我们自己手动回收直接内存。
public class Demo1_27 {static int _1Gb = 1024 * 1024 * 1024;public static void main(String[] args) throws IOException {Unsafe unsafe = getUnsafe();// 分配内存long base = unsafe.allocateMemory(_1Gb);unsafe.setMemory(base, _1Gb, (byte) 0);System.in.read();// 释放内存unsafe.freeMemory(base);System.in.read();}public static Unsafe getUnsafe() {try {Field f = Unsafe.class.getDeclaredField("theUnsafe");f.setAccessible(true);Unsafe unsafe = (Unsafe) f.get(null);return unsafe;} catch (NoSuchFieldException | IllegalAccessException e) {throw new RuntimeException(e);}}
}
http://www.hengruixuexiao.com/news/13659.html

相关文章:

  • 线上室内设计师seo专员
  • 叫別人做网站靠谱吗东莞哪种网站推广好
  • 网站开发 语音全搜网
  • 1688网站首页影视后期培训机构全国排名
  • 贵阳今天疫情最新通知桔子seo查询
  • 湖南网站优化推广网站推广优化设计方案
  • 网站banner尺寸1920邢台网站公司
  • 昆明网站建设电话品牌宣传策划方案
  • 微信网页宣传网站怎么做深圳最新新闻事件今天
  • 创建信息平台的方法宁波seo运营推广平台排名
  • 网站统计如何做学生网页设计模板
  • 在网站制作完成后网站建设企业培训课程安排表
  • 长沙网站制作公司推荐东莞网络推广排名
  • 单位做网站怎么做门户网站
  • 营销网站建设选择原则芒果视频怎样下载到本地
  • 辽宁城乡建设集团成立网站企业营销策划书模板
  • 动态网站开发语言的优势与不足朝阳seo排名优化培训
  • 美容院装修河北搜索引擎优化
  • 西宁网站建设报价壹君博贴心惠州网站关键词排名
  • 赤峰微网站建设镇江seo公司
  • 网站怎么做桌面快速链接网络营销个人感悟小结
  • 网站建设优化价格网页制作公司
  • 苏州网站制作哪家好seo基础教程视频
  • 学网站制作重庆seo排名扣费
  • 同一个域名在一个服务器做两件网站国外网站怎么推广
  • 宁德城乡建设网站凯里seo排名优化
  • 物流wap网站模板免费下载百度并安装
  • 做直播网站用什么语言百度竞价渠道代理商
  • 做网站付多少定金搜狗权重查询
  • 做传奇网站百度百科官网入口