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

做视频网站付费版站内关键词自然排名优化

做视频网站付费版,站内关键词自然排名优化,济南专门做公司网站的公司,像优酷这样的网站需要怎么做目录 1- 引言:直接内存概述1-1 直接内存是什么?直接内存的定义(What)1-2 为什么用直接内存?Java程序对直接内存的使用 (Why) 2- ⭐核心:详解直接内存(How)2-1 文件拷贝案例介绍对比常规 IO(BIO) 和 NIO常规 IO 的操作流程NIO 的操…

目录

  • 1- 引言:直接内存概述
    • 1-1 直接内存是什么?直接内存的定义(What)
    • 1-2 为什么用直接内存?Java程序对直接内存的使用 (Why)
  • 2- ⭐核心:详解直接内存(How)
    • 2-1 文件拷贝案例介绍对比常规 IO(BIO) 和 NIO
      • 常规 IO 的操作流程
      • NIO 的操作流程
  • 3- 小结:
    • 3-1 什么是直接内存?


1- 引言:直接内存概述

1-1 直接内存是什么?直接内存的定义(What)

  • 直接内存:并不属于 JVM 中的内存结构,不由 JVM 进行管理。是虚拟机的系统内存,常见于 NIO 操作时,用于数据缓冲区,它分配回收成本较高,但读写性能高。

1-2 为什么用直接内存?Java程序对直接内存的使用 (Why)

  • 高性能需求:直接内存的读写性能高于传统的JVM堆内存,因为减少了内存复制的次数。在进行大量数据的读写操作时,使用直接内存可以显著提高性能。
  • NIO操作:Java NIO(Non-blocking IO)库通过使用直接内存来提升IO操作的吞吐量。直接内存允许Java程序直接访问操作系统的内存,从而减少了数据在系统缓冲区和Java堆缓冲区之间复制的开销。
  • 资源共享:直接内存是操作系统内存的一部分,可以被操作系统和Java程序共享访问,这使得数据处理更加高效。
  • 避免垃圾回收:直接内存不受JVM的垃圾回收机制影响,减少了由于垃圾回收导致的性能波动,对一些高性能应用场景尤为重要。

2- ⭐核心:详解直接内存(How)

2-1 文件拷贝案例介绍对比常规 IO(BIO) 和 NIO

  • Java 代码完成文件拷贝
  • 场景:E:/bak1 下有文件 需要拷贝到 ——>E:/bak2 文件夹下

image.png

package com.heima.jvm;import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.io.FileInputStream;
import java.io.FileOutputStream;public class DirectMemoryDemo {static final String FROM = "E:\\bak1\\01-java成神之路.mp4";static final String TO = "E:\\bak2\\abc.mp4";static final int _1Mb = 1024 * 1024;public static void main(String[] args) {io(); // 256.8563directBuffer(); // 63.2449}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 (Exception e) {e.printStackTrace();}long end = System.nanoTime();System.out.println("NIO Time: " + (end - start) / 1e6 + " ms");}private static void io() {long start = System.nanoTime();try (FileInputStream fis = new FileInputStream(FROM);FileOutputStream fos = new FileOutputStream(TO)) {byte[] buffer = new byte[_1Mb];int len;while ((len = fis.read(buffer)) != -1) {fos.write(buffer, 0, len);}} catch (Exception e) {e.printStackTrace();}long end = System.nanoTime();System.out.println("IO Time: " + (end - start) / 1e6 + " ms");}
}

image.png

  • 结果分析:NIO 比 BIO 效率更高

常规 IO 的操作流程

  • Java本身不具备磁盘读写的能力,如果 Java 需要对磁盘进行读写,必须调用操作系统提供的函数(Native 修饰的本地方法)

①内存操作 ——> CPU状态切换

  • Java程序运行在用户态(User Space),当需要进行磁盘读写操作时,必须切换到内核态(Kernel Space)。这种切换会消耗CPU资源。

②内存操作 ——> 数据读取和缓冲区使用:

  • 通过调用操作系统的函数,将磁盘文件读取到系统缓存区中。
  • 为了避免内存占用过大,操作系统利用缓冲区分批次读取数据。

③系统缓冲区与Java缓冲区的交互:

  • 系统的缓冲区中 Java 代码无法直接运行,因此 Java 程序需要在堆内存中分配一块缓冲区(Java缓冲区)来存储数据,通常通过new byte[]的方式分配。

⑤数据复制:

  • 数据从系统缓冲区复制到Java缓冲区。
  • Java代码通过读取Java缓冲区中的数据进行操作。
  • 由于存在两块缓冲区,数据需要在两块内存中存储两次,这会导致不必要的复制操作,从而降低效率。

问题所在:多次数据复制

  • 因为数据需要从系统缓冲区复制到Java缓冲区,导致了数据的重复存储。
  • 这种多次数据复制不仅消耗内存资源,还会影响整体性能。

image.png

NIO 的操作流程

image.png

  • 在 NIO 的过程中,操作系统直接在内存中划分出了一个 直接内存 缓冲区, Java 代码也可以直接在直接访问直接内存。
  • 直接内存对于操作系统和 Java 来说都是可以共享的区域,这就是直接内存。这就是直接内存带来的好处,直接提高了文件的 IO 操作。

3- 小结:

3-1 什么是直接内存?

在这里插入图片描述

http://www.yidumall.com/news/39532.html

相关文章:

  • 有什么网站可以接活做设计新开网店自己如何推广
  • 惠州市两学一做网站网络推广员工资多少钱
  • 哈尔滨做网站哪家好网站的营销推广方案
  • 企业的网站用vue做的友情链接的检查方法
  • 微信开发者代码管理昆明长尾词seo怎么优化
  • 布吉做网站seo软件简单易排名稳定
  • 订做网站策划营销策略国内外文献综述
  • pc 网站建设电商网站平台搭建
  • 做网站推广的好处交换链接
  • 鼎湖网站建设公司域名查询访问
  • 反馈网站怎么做优化设计答案六年级
  • 北京市房山区住房和城乡建设委员会网站社区建站网站系统
  • 网站检测报告哪里做东莞网络公司电话
  • 有没有做外贸免费网站长沙seo关键词
  • 马关县住房和城乡建设局网站谷歌seo顾问
  • 一流的高密网站建设免费大数据查询
  • 动态网站开发 实训总结郑州网站推广电话
  • 建设网站你认为需要注意哪些问题微商怎么引流被加精准粉
  • 怎么看网站开发的发展竞价推广哪里开户
  • 网站建设智推网百度电话客服
  • 怎么去推广一个网站宝鸡seo培训
  • 公安网站管理系统破解怎样推广app
  • 做注册任务赚钱的网站讯展网站优化推广
  • 张家港电脑网站制作百度网页搜索
  • 国外专门做视频翻译网站吗怎么做网站卖产品
  • 外贸英文网站建设价格商城推广软文范文
  • 企业网站管理系统破解版济南做网站公司哪家好
  • 做彩票网站能挣到钱吗爱站网长尾关键词挖掘工具下载
  • 福建漳州网站建设价格驾校推广网络营销方案
  • 为什么我有的网站打不开黑马程序员培训机构官网