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

陕西省住房和城乡建设厅网站上查询优秀企业网站设计要点

陕西省住房和城乡建设厅网站上查询,优秀企业网站设计要点,app地图下载安装,wordpress建站教程 cmsJava 进程内存占用除了JVM 运行时数据区#xff0c;还有直接内存#xff08;Direct Memory#xff09;区域及 JVM 程序自身也会占用内存 直接内存#xff08;Direct Memory#xff09;区域#xff1a;直接内存通过使用Native堆外内存来存储数据#xff0c;这意味着数据…Java 进程内存占用除了JVM 运行时数据区还有直接内存Direct Memory区域及 JVM 程序自身也会占用内存 直接内存Direct Memory区域直接内存通过使用Native堆外内存来存储数据这意味着数据不会被JVM的垃圾回收机制自动回收。与JVM堆内存相比直接内存的分配和释放成本较高因为它涉及与操作系统交互和内存管理的开销也可能导致OOM异常出现JVM 程序自身JVM本身是个本地程序还需要其他的内存去完成各种基本任务比如JIT Compiler 在运行时对热点方法进行编译就会将编译后的方法储存在 Code Cache 里面GC 等功能需要运行在本地线程之中类似部分都需要占用内存空间 JVM内存区域划分详见 Java 内存区域与内存溢出异常 堆外内存 JVM 的堆外内存是指分配在JVM堆之外的内存空间它不受JVM的垃圾回收机制管理。 以下是几种常见的JVM堆外内存 直接字节缓冲区Direct ByteBuffersDirect ByteBuffer是JVM堆外内存的一种形式它通过使用Native堆外内存来存储数据。NIONew I/O内存映射文件Memory-mapped FilesNIO提供了一种将文件映射到内存的方式这种内存映射文件将文件的内容直接映射到堆外内存中可以通过内存访问的方式来读写文件。JNIJava Native InterfaceJNI允许Java程序与本地代码进行交互可以在本地代码中分配和管理堆外内存。 堆外内存可以使用Native Memory Tracking 或 Arthas memory 进行监控及诊断 直接字节缓冲区 在实际使用中Java 会尽量对 Direct Buffer 仅做本地 IO 操作对于很多大数据量的 IO 密集操作可能会带来非常大的性能优势因为 Direct Buffer 可以通过ByteBuffer.allocateDirect()方法来创建它的数据存储在堆外内存中生命周期内内存地址都不会再发生更改进而内核可以安全地对其进行访问很多 IO 操作会很高效减少了堆内对象存储的可能额外维护工作所以访问效率可能有所提高 Direct Buffer 创建和销毁过程中都会比一般的堆内 Buffer 增加部分开销所以通常都建议用于长期使用、数据较大的场景。 可以使用JVM参数设定直接内存限制 -XX:MaxDirectMemorySize512M大多数垃圾收集过程中都不会主动收集 Direct Buffer它的垃圾收集过程就是基于 Cleaner一个内部实现和幻象引用PhantomReference机制其本身不是 public 类型内部实现了一个 Deallocator 负责销毁的逻辑。对它的销毁往往要拖到full GC的时候所以使用不当很容易导致OutOfMemoryError Direct Buffer 回收方式 在应用程序中显式地调用System.gc()来强制触发。另外一种思路是在大量使用 Direct Buffer 的部分框架中框架会自己在程序中调用释放方法Netty 就是这么做的有兴趣可以参考其实现PlatformDependent0重复使用 Direct Buffer NIO Java NIONew I/O是Java提供的一套用于高效处理I/O操作的API引入自JDK 1.4版本。相对于传统的Java I/OIO流APIJava NIO提供了更灵活、更高效的非阻塞I/O操作方式适用于构建高性能的网络应用程序。 Java NIO的核心概念包括以下几个部分 通道Channel通道是数据源和数据目标之间的连接可以通过通道读取和写入数据。通道可以是双向的可以从通道中读取数据也可以向通道中写入数据缓冲区Buffer缓冲区是一个固定大小的数据容器用于存储读取和写入的数据。通过缓冲区可以更高效地读写数据避免频繁的数据拷贝操作。缓冲区可以读取和写入不同类型的数据如字节、字符、整数等选择器Selector选择器是用于多路复用非阻塞I/O操作的组件。可以通过选择器同时管理多个通道使得单线程可以处理多个通道的I/O操作提高系统的性能和吞吐量 NIO提供了一种将文件映射到内存的方式这种内存映射文件将文件的内容直接映射到堆外内存中。这种方式在处理大型文件时可以提供更高的性能和效率 JNI 使用JNIJava Native Interface可以在Java程序中通过调用本地代码来使用JVM堆外内存。JNI提供了一种机制使得Java程序可以与本地代码进行交互调用本地代码中的函数和访问本地内存 通过JNIJava程序可以直接访问和操作本地内存例如在C或C中使用malloc()和free()函数进行内存分配和释放 JNI操作JVM堆外内存具体步骤 定义本地方法在Java类中声明本地方法使用native关键字标记。 public class NativeMemoryExample {public native void allocateMemory(int size);public native void freeMemory(); }生成本地方法的头文件使用Java的javac命令编译Java源文件然后使用javah命令生成本地方法的头文件。 javac NativeMemoryExample.java javah NativeMemoryExample这将生成名为NativeMemoryExample.h的头文件 实现本地方法在本地代码中实现Java类中声明的本地方法。在本地方法中可以使用C/C等编程语言来操作堆外内存 #include NativeMemoryExample.h #include stdlib.hJNIEXPORT void JNICALL Java_NativeMemoryExample_allocateMemory(JNIEnv *env, jobject obj, jint size) {void *buffer malloc(size);// 使用buffer进行堆外内存操作 }JNIEXPORT void JNICALL Java_NativeMemoryExample_freeMemory(JNIEnv *env, jobject obj) {// 释放之前分配的堆外内存free(buffer); }编译本地代码使用C/C编译器将本地代码编译为共享库或动态链接库 gcc -shared -fpic -o libNativeMemoryExample.so NativeMemoryExample.c加载本地库在Java程序中使用System.loadLibrary()方法加载本地库 public class Main {static {System.loadLibrary(NativeMemoryExample);}public static void main(String[] args) {NativeMemoryExample example new NativeMemoryExample();example.allocateMemory(1024); // 调用本地方法分配堆外内存// ...example.freeMemory(); // 调用本地方法释放堆外内存} }通过以上步骤Java程序可以使用JNI调用本地方法在本地代码中进行对JVM堆外内存的分配和释放操作。需要注意的是在使用JNI时应谨慎管理内存避免内存泄漏和溢出确保正确地释放分配的堆外内存 参考资料 Java Native InterfaceDirect BufferNative Memory Tracking
http://www.hkea.cn/news/14280533/

相关文章:

  • 建立主题网站的知识点定做专业营销型网站
  • 公司网站建设价格贵吗免费搭建个人网站的3种实用方法
  • 防城港seo公司哈尔滨企业网站seo
  • 做商铺的网站有那些学网站建设需要多长时间
  • 网站 类库阿里自助建站
  • 上海响应式建站泰安网站开发推广
  • 手机端访问 php网站做的好的农产品网站
  • 深圳网站建设 龙华信科咨询网站建设衤金手指花总
  • 网站怎么上传网络营销策划的具体流程是
  • 长沙宁乡建设网站wordpress4.9.4 mysql
  • 网站建设程序员招聘哈尔滨建设网站
  • 网站维护运营好做吗做网站用框架么
  • 邢台网站设计怎么做有没有会计做兼职的网站
  • 网站建设 通知电子商务企业
  • 云南手机网站建设wordpress添加相册
  • 检察门户网站建设方案网站更新前知道内容
  • 专做律所网站买一个软件大概多少钱
  • net网站开发学习网络营销产生的基础包括
  • 手机网站建设的整体流程图双减之下托管班合法吗
  • 网站制作哪家公司好开票 网站建设
  • 网站运营分析竞争对手c在线编程网站
  • 电商网站开发脑图购物平台网站建设框架
  • 用电脑做服务器搭建php网站东莞容桂网站制作
  • 宁夏交通建设股份有限公司网站怎样做推广营销
  • 苏州市建设局投诉网站深圳网站设计 建设首选深圳市
  • 沈阳网络平台推广公司廊坊视频优化价格
  • 开发个网站多少钱装修平台入驻
  • 网站建设 技术方案湖南网站开发 d岚鸿
  • 牡丹江3d网站开发自己怎么做外贸网站空间
  • 网站开发工资淄博网站备案主体授权书