StringTable调优和直接内存释放原理

这篇具有很好参考价值的文章主要介绍了StringTable调优和直接内存释放原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

37 StringTable垃圾回收

字符串常量也可以被垃圾回收。
1、设置虚拟机参数。

底层类似于哈希表实现,数组+链表
桶,buckets

38 StringTable调优

调整hashtable桶的个数

39 调优

intern的应用

40 调优

41 直接内存

不属于java虚拟机的内存,属于操作系统内存。
主要用于NIO操作,数据读写的缓冲区。
分配回收成本高,读写性能高。

directBuffer()
读写大文件性能很高。

42 基本使用

磁盘文件,
系统内存  系统缓冲区
java堆内存 byte[]

使用directbuffer后
	在操作系统划分一块缓冲区,java和磁盘都可以共享的。减少了缓冲区的一次复制。

43 直接内存-内存溢出

分配的内存,不受java虚拟机垃圾回收。

是否内存溢出?
	会导致内存溢出。
	direct buffer memory

44 直接内存-释放原理

不受虚拟机内存管理,是否会被回收?
不被java管理
使用工具任务管理器。
进程对内存的占用情况

45 直接内存-释放原理

直接内存的分配和释放通过unsafe方法管理

必须主动调用
unsafe.freeMemory(base);

46 释放原理

cleaner=Cleaner.create(this,new Deallocator(base,size,cap));
借助了java的虚引用的机制。

47 禁用显式回收对象

byteBuffer内部,使用了cleaner虚引用监测byteBuffer对象,一旦byteBuffer对象被垃圾回收,又refererenceHandler线程通过Cleaner的clean方法调用freeMemory释放直接内存。

使代码中的system.gc()无效。

文章来源地址https://www.toymoban.com/news/detail-633502.html

到了这里,关于StringTable调优和直接内存释放原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 3.Java面试题—JVM基础、内存管理、垃圾回收、JVM 调优

    一篇文章掌握整个JVM,JVM超详细解析!!! JVM (Java虚拟机) 是运行 Java 字节码 的 虚拟机 。 JVM 针对 不同系统 有 特定实现 ( Windows 、 Linux 等),目的是 同样的代码 在 不同平台 能运行出 相同的结果 。 Java 语言 要经过 编译 和 解释 两个步骤: 编译 :通过 编译器 将 代码 一

    2024年02月15日
    浏览(39)
  • Java虚拟机快速入门 | JVM引言、JVM内存结构、直接内存

    目录 一:JVM引言 1. 什么是 JVM ? 2. 常见的 JVM 3. 学习路线 二:JVM内存结构 1. 程 序 计 数 器(PC Register) 2. 虚 拟 机 栈(JVM Stacks) 3. 本 地 方 法 栈(Native Method Stacks) 4. 堆(Heap) 5. 方 法 区(Method Area) 三:直接内存 tips: 首先给大家推荐两款好用的免费软件:动图抓取软

    2024年02月05日
    浏览(53)
  • 【JVM调优系列】如何导出堆内存文件

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年01月17日
    浏览(36)
  • JVM基础篇-直接内存

    什么是直接内存? 直接内存( 堆外内存 ) 指的是 Java 应用程序通过直接方式从操作系统中申请的内存,这块内存不属于jvm 传统方式读取文件 首先会从用户态切换到内核态,调用操作系统函数从磁盘读取文件,读取一部分到操作系统缓冲区中 然后从内核态切换到用户态,从系统

    2024年02月13日
    浏览(27)
  • 面试系列 - JVM内存模型和调优详解

    目录 一、JVM内存模型 1. 程序计数器(Program Counter Register): 2.Java虚拟机栈(Java Virtual Machine Stacks): 3. 本地方法栈(Native Method Stack): 5. 方法区(Method Area): 6. 运行时常量池(Runtime Constant Pool): 7. 直接内存(Direct Memory): 二、垃圾回收期CMS和G1区别 1. 工作原理:

    2024年02月10日
    浏览(35)
  • JVM基础篇-StringTable

    特性 常量池中的字符串仅是符号,第一次用到时才变为对象 利用串池的机制,来避免重复创建字符串对象 字符串变量拼接的原理是 StringBuilder (1.8) 字符串常量拼接的原理是 编译期优化 可以使用 intern 方法,主动将串池中还没有的字符串对象放入串池 1.8 将这个字符串对象

    2024年02月14日
    浏览(31)
  • 【Jvm】性能调优(拓展)Jprofiler如何监控和解决死锁、内存泄露问题

    Jprofilers是针对Java开发的 性能分析工具(免费试用10天) , 可以对Java程序的 内存,CPU,线程,GC,锁 等进行监控和分析 , 本人IDEA版本是 2020.2.2 ,选择的Jprofiler版本是 12.0 (早期的版本是纯英文的, 12.0支持中文 ,安装主要考虑是否与IDEA插件兼容即可) 进入Jprofiler官网下载 - Jprofiler 版本这

    2024年02月19日
    浏览(37)
  • Java线上故障排查(CPU、磁盘、内存、网络、GC)+JVM性能调优监控工具+JVM常用参数和命令

    根据服务部署和项目架构,从如下几个方面排查: (1)运用服务器:排查内存,cpu,请求数等; (2)文件图片服务器:排查内存,cpu,请求数等; (3)计时器服务器:排查内存,cpu,请求数等; (4)redis服务器:排查内存,cpu,连接数等; (5)db服务器:排查内存,cpu,连接数

    2024年02月07日
    浏览(46)
  • 深度剖析JVM调优法则,神器Arthas从CPU/内存出发轻松掌握调优实战技巧

    场景一、CPU过高 CPU占用过高排查思路: step1:进行arthas step2:输入deashboard 如何不记得命令可以在控制台输入help step3:查看线程栈信息 从线程栈信息中定位到具体的java代码。 场景二、内存占用过高 内存占用过高排查思路: step1:进行arthas step2:输入deashboard 在dashboard页面中

    2024年02月06日
    浏览(35)
  • JVM源码剖析之SymbolTable和StringTable

    很多读者在观看JVM相关的书籍时会看到SymbolTable和StringTable,书中的三言二语介绍的不是很清楚,并且读者的水平有限,导致无法理解SymbolTable和StringTable。所以特意写此篇图文并茂的文章来彻底理解SymbolTable和StringTable这两张表。 版本信息如下: 因为Hotspot是c++构成,所以也存

    2024年02月13日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包