要是我回答的话我大概会这么说: 在我看来根本就不存在直接内存的GC这一说法。Netty 也好ES也好kafka也好,在版本迭代中把一部分数据结构放到堆外就是为了防止GC的随机性带来的抖动。这是语义层面,对于堆外的内存我更倾向的说法是归还或者释放。 java服务是一个进程,向os申请了一块内存(大内存申请一般是依赖mmap这个系统调用),而且这块内存不归jvm管。jvm内部只维护一个指向堆外内存的指针而已。 使用者必须要全权负责这块内存的生命周期。所以一般的策略是将其池化,引入相关的策略管理这片“非法”区域——可以参考一下netty的做法。 至于所谓的gc,其实就是将申请的内存归还操作系统。这部分只能交由jvm做,我记得应该是在回收bufferpool对象时执行它的销毁方法从而归还该块内存。
点赞 6

相关推荐

04-22 15:38
已编辑
门头沟学院 Java
边设备配置的版本号是依据什么生成的怎么检测接口状态变化?是否下线?Redis的ZsetRedis怎么持久化的Kafka具体架构Kafka 的多分区以及多副本Kafka能保证顺序吗?多分区能保证顺序吗(Kafka 保证一个 Partition(分区) 中的消息有序)?Kafka 如何保证消息的消费顺序?Kafka 重试机制Kafka 如何保证消息不丢失?Kafka 如何保证消息不重复消费?时间轮算法移除非活跃连接,步长多少(1s), 槽设多少(8个)Modbus协议怎么用的,怎么优化MySQL怎么读写分离、主从分离MySQL比Elasticsearch的优势MySQL的事务的隔离级别有哪些(4个),分别解决了哪些并发问题MySQL的锁有哪些MySQL的串行化隔离级别是通过什么实现的MySQL,对于「读提交」和「可重复读」隔离级别的事务来说,它们是通过 Read View 来实现的MySQL怎么用MVCC实现Read ViewMySQL在数据变动较大时,分页得到的数据重复或丢失的问题怎么解决的JVM的内存区域与功能ConcurrentHashMap原理与实现Mybatis的缓存Java中的反射,Spring中什么地方用到了反射线程池的参数、原理、工作队列synchronized和reentrantlock的区别介绍一下AQSSpring IoCSpringboot怎么自动配置介绍Dubbo、zookeeper,都有什么用还了解啥分布式组件吗了解SpringCloud吗,介绍一下SpringCloud微服务常用的组件字体加密反爬虫解析成功率是多少了解什么最新的技术吗,介绍一下大模型相关假设项目是百万级别的,怎么重新构造项目模块未来的职业规划?是不是要往互联网方向发展(坚定的回答:是!!!🤣🤣🤣)手撕lru实现
点赞 评论 收藏
分享
首先面试官介绍业务部门和职位信息 然后自我介绍一开始问了个人信息 然后开始八股文环节java有哪些表示字符串的类(String、StringBuilder、Stringbuffer)具体区别String类不可变性 以及设置为不可变的优点有哪些synchronized和ReentrantLock的区别 讲一下ReentrantLock底层原理关于java的范型擦除 导致什么问题讲一下CMS和G1垃圾收集器 有什么区别mysql什么是索引 索引数据结构 除了B+树还有什么索引类型 索引的优点介绍一下mysql的innodb存储引擎 还有什么其他的存储引擎 innodb优点数据库的隔离级别 mysql如何解决不可重复读 关于MVCC项目中如何优化慢sql 项目中有无优化效率的具体案例,讲一下怎么解决的接下来就是针对项目具体内容进行提问 (我的是一个AI代码评审的项目)然后就是代码题 leetcode 143重排链表第一次代码手撕 有点紧张 写了一会 一直在调试 最后让我讲一下思路 说我思路正确 至少调试问题 算我写出来了然后问了一些开放性问题 如何学习javaweb的?如何提升代码水平?如何学习新知识的?具体看了哪些技术书籍?如何选择技术书籍?最后反问环节 问了该职位的具体业务和技术栈以及美团新项目使用什么版本的JDK总体面试体验非常 面试官很友善 感觉受益良多#牛客AI配图神器#
美团一面2071人在聊 查看15道真题和解析
点赞 评论 收藏
分享
牛客网
牛客企业服务