方法区内存溢出及常量池
22 方法区-定义
是所有线程共享的一块区域。
存储了和类结构相关信息。运行时常量池,
方法区在虚拟机启动时被创建,逻辑上是堆的组成部分。方法区内存不足,也会导致oom异常。
是一个概念上的东西,
1.6使用永久代作为方法区,类和类加载器。还有运行时常量池,串池。
1.8 Metaspace 元空间,类,类加载器,常量池,不占用堆空间,不由jvm管理,占用操作系统内存。
23 方法区——内存溢出
ClassLoader 用来加载类的二进制字节码。循环1000次,是否会因为类加载过多,导致方法去内存溢出。
-XX:MaxMetaspaceSize=8m 演示元空间内存溢出问题。1.8以前导致永久代内存溢出;
1.8以后导致元空间内存溢出。
24 内存溢出
场景
spring
mybatis都使用了cglib,动态代理核心
25 方法区——常量池
什么叫常量池?javap -v Helloworld.class 反编译java源代码变成虚拟机指令。
查表翻译 #2
查询常量池的表。
给指令提供一些常量符号,查表方式找到他们。
26 方法区-运行时常量池
是一张表,虚拟指令从里面找,执行的类名,方法名,参数,字面量等信息。
运行时常量池,当类被加载,它的常量池就会被放到运行时常量池(内存中),地址变为真实地址。
27 StringTable面试题
28 常量池和串池的关系
ldc #2 把a符号变为"a"字符串对象。
每个字符串对象都不是事先放到串池,而是用到才开始创建字符段对象,是懒惰的行为。StringTable ["a","b","ab"] hashtable结构,不能扩容。astore 存储
aload 从表中拿到
29 字符串变量拼接
测试代码
public class Demo1_22 {public static void main(String[] args) {String s1="a";String s2="b";String s3="ab";String s4=s1+s2;System.out.println(s3==s4);}
}//new StringBuilder().apend("a").append("b").toString() new String("ab")
结果
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mSXxsJia-1691329173338)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230806163553488.png)]
30 编译器优化
javac在编译期的优化,都是常量,拼接的结果已经确定了。
代码
public class Demo1_22 {public static void main(String[] args) {String s1="a";String s2="b";String s3="ab";String s4=s1+s2;String s5="a"+"b";System.out.println(s3==s5);}
}

31 字符串延迟加载
使用menmery工具,没有存在的对象会进行加载,已经存在的对象就不去新增。
相关文章:
方法区内存溢出及常量池
22 方法区-定义 是所有线程共享的一块区域。 存储了和类结构相关信息。运行时常量池, 方法区在虚拟机启动时被创建,逻辑上是堆的组成部分。方法区内存不足,也会导致oom异常。 是一个概念上的东西, 1.6使用永久代作为方法区&#…...
【MTK平台】【wpa_supplicant】关于wpa_supplicant_8/src/p2p/p2p_invitation.c文件的介绍
本文主要介绍external/wpa_supplicant_8/src/p2p/p2p_invitation.c文件 这里主要介绍6个方法 1.p2p_invite //p2p邀请调用此方法 2.p2p_invite_send //对p2p_invite方法进行补充 3. p2p_process_invitation_resp 4.p2p_process_invitation_req 5.p2p_build_invitation_re…...
智能仪表板DevExpress Dashboard v23.1亮点 - 增强对自定义导出的支持
DevExpress Dashboard v23.1版本增强了自定义导出到Excel的功能等,欢迎下载最新版本体验! DevExpress Dashboard v23.1正式版下载(Q技术交流:523159565) 所有平台 导出自定义仪表板项目到Excel 用户现在可以在WinForms和Web应…...
分布式应用:ELK企业级日志分析系统
目录 一、理论 1.ELK 2.ELK场景 3.完整日志系统基本特征 4.ELK 的工作原理 5.ELK集群准备 6.Elasticsearch部署(在Node1、Node2节点上操作) 7.Logstash 部署(在 Apache 节点上操作) 8.Kiabana 部署(在 Node1 节点…...
Mac与windows传文件(超过4G且速度超快,非共享)
MAC与Windows文件互传 背景 尝试了网上的一些方法,诸如设置共享文件夹方法等,但是实际使用中感觉效果一般,对于一些小的文件共同编辑速度还可以。但是在备份或者传递一些较大文件或者很多细小文件的时候就有点捉襟见肘了。制作了一个MAC可读…...
2023年第四届“华数杯”数学建模思路 - 案例:退火算法
## 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 退火算法原理 1.1 物理背景 在热力学上,退火(annealing)现象指物体逐渐降温的物理现象,温度愈低&#…...
STM32 UDS Bootloader开发-上位机篇-CANoe制作(3)
文章目录 前言刷写脚本34服务写入数据的实现定时函数writeBlockData函数Checksum总结前言 上一篇文章中介绍了CAPL刷写脚本的大部分内容,本文继续介绍34,36,37服务的实现,及checksum中遇到的坑 刷写脚本 34服务 void requestDownLoad(struct Block hexfile) {gTxBuffer[…...
GO语言的垃圾回收机制
内存垃圾的产生 程序在内存上被分为堆区、栈区、全局数据区、代码段、数据区五个部分。对于C等早期编程语言栈上的内存回由编译器负责管理回收,而堆上的内存空间需要编程人员负责申请和释放。在Go中栈上内存仍由编译器负责管理回收,而堆上的内存由编译器…...
vim粘贴内容格式混乱解决方法
问题 复制本地文件内容后,咱贴到vim文本内,格式错乱 解决方法 打开vim配置文件 最后面加入一行 vim /etc/vimrc set pastetoggle<F11> 开发vim文件,进入后先按F11进入交互模式 shift insert 再次粘贴 解决...
基于Orangepi 3 lts 的云台相机
利用orangepi 3 lts 和arduino nano 制作了一个云台相机,可用于室内监控。 硬件: orangepi 3 ,arduino nano ,usb相机,180度舵机两个 WeChat_20230806213004 软件: 整体采用mqtt进行消息的中转。 相机采用python 利用opencv…...
Go重写Redis中间件 - Go实现Redis持久化
GO实现Redis持久化 项目开发到这里,我们的下一步就是实现Redis的持久化落盘功能,Redis是一个内存型的数据库,在之前我们实现的单机版Redis如果把进程杀掉,我们通过GET、SET指令存储的数据都将不复存在,数据只存在内存的map里面,重启之后什么都没有了 我们现在的目标就是…...
单元测试之 - Review一个微服务的单元测试
这里以github上一个microservice的demo代码为例,来看看如何为一个完整的服务编写单元测试。具体代码如下所示,我们重点查看一下catalog和customer,order中的单元测试有哪些。 首先来看catalog服务的单元测试,这个服务下面主要编写了CatalogWe…...
NetSuite 2023.2 Cash 360 功能更新
大约一年前,Cash 360功能推出。我们写了篇介绍: NetSuite Cash 360_netsuite oneworld数据可以迁移到sap上吗_NetSuite知识会的博客-CSDN博客Cash 360是在SuiteWorld 2021做的预告,本来是要跟着22.1发布出来,但是各种原因导致跳票…...
vue2-组件和插件的区别
1、组件是什么? 组件就是把图形、非图形的各种逻辑均抽象为一个统一的概念(组件)来实现开发的模式,在vue中每一个.vue文件都可以被视为一个组件。 组件的优势: 降低整个系统的耦合度,在保持接口不变的情况下…...
neo4j查询语言Cypher详解(一)--语法和子句
前言 neo4j的图查询语言叫Cypher。Cypher的独特之处在于它提供了一种匹配模式和关系的可视化方式。 (nodes)-[:ARE_CONNECTED_TO]->(otherNodes)使用圆角括号表示节点(nodes), -[:ARROWS]->表示关系。 语法 解析 Cypher解析器接受任意输入字符串。 unico…...
PCIe总线详解
一、PCIe简介 PCI Express (peripheral component interconnect express) 简称PCIe,是一种高速、串行、全双工、计算机扩展总线标准,采用高速差分总线,并采用端到端的连接方式,因此在每一条PCIe链路中两端只能各连接一个设备。相对…...
【vim 学习系列文章 4 - vim与系统剪切板之间的交互】
文章目录 背景1.1.1 vim支持clipboard 检查1.1.2 vim的寄存器 上篇文章:【vim 学习系列文章 3 - vim 选中、删除、复制、修改引号或括号内的内容】 背景 从vim中拷贝些文字去其它地方粘贴,都需要用鼠标选中vim的文字后,Ctrlc、Ctrlv&#x…...
代码随想录算法训练营第五十六天| 583. 两个字符串的删除操作 72. 编辑距离
代码随想录算法训练营第五十六天| 583. 两个字符串的删除操作 72. 编辑距离 一、力扣583. 两个字符串的删除操作 题目链接 思路:相等时不删除,不相等时,两个字符串各删除一个,比大小,删除用步骤少的。 class Soluti…...
Mac强制停止应用
有时候使用Mac的时候,某个应用卡住了,但是肯定不能因为一个应用卡住了, 就将电脑重启吧,所以只需要单独停止该应用即可,使用快捷键optioncommandesc就会出现强制停止的界面,选择所要停止的应用,…...
Linux系统Redis的哨兵架构配置
Linux系统Redis的哨兵架构配置 此处基于 Linux系统Redis的主从架构配置 进行哨兵高可用架构的搭建 此案例在一台虚拟机上启动6379和6380和6381三个reids主从实例(6379为主节点,6380和6381为从节点),以及26379、26380、26381的sent…...
高校站群建设方案:站群模式VS单站建设,核心优势详解
在高校信息化建设中,"官网站群改造"正逐渐取代传统的"单站建设"模式,成为主流选择。要理解这一趋势,首先要明白高校网站建设面临的现实困境。高校传统单站建设的痛点过去,高校各学院、职能部门往往各自为政&a…...
Python锚点链接解析利器pyanchor:高效处理HTML/Markdown文档内部链接
1. 项目概述:一个Python实现的锚点链接解析利器最近在整理一个大型文档项目时,遇到了一个挺头疼的问题:我需要从成千上万个Markdown文件中,批量提取所有指向文档内部特定章节的锚点链接,并验证这些链接是否有效。手动操…...
3步掌握天龙八部单机版数据编辑:从游戏管家到创意设计师的蜕变之路
3步掌握天龙八部单机版数据编辑:从游戏管家到创意设计师的蜕变之路 【免费下载链接】TlbbGmTool 某网络游戏的单机版本GM工具 项目地址: https://gitcode.com/gh_mirrors/tl/TlbbGmTool 你是否曾在天龙八部单机版中遇到过这样的困扰:角色成长太慢…...
命令行故障自动修复工具 fix-my-claw:原理、插件架构与实战指南
1. 项目概述:一个修复“爪子”的实用工具最近在GitHub上看到一个挺有意思的项目,叫caopulan/fix-my-claw。光看名字,你可能会有点摸不着头脑——“爪子”是什么?需要修复什么?这其实是一个典型的、由开发者社区需求催生…...
后端架构师转型AI智能体落地:收藏这份3个月进阶指南,轻松玩转不确定性系统
本文为后端/全栈/架构师提供了一条从零到一掌握AI智能体落地的技术路径。文章首先分析了架构师在AI智能体落地中的核心优势,如分布式系统设计、数据库设计、API封装等;接着,提出了一个分四阶段的三个月进阶计划,包括掌握核心范式、…...
终极D2DX宽屏补丁:让经典暗黑破坏神2在现代PC上完美重生
终极D2DX宽屏补丁:让经典暗黑破坏神2在现代PC上完美重生 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还…...
Kubernetes部署Valheim游戏服务器:云原生架构实践指南
1. 项目概述:当维京英灵殿遇上Kubernetes如果你和我一样,既沉迷于《英灵神殿》(Valheim)里那种与三五好友一起伐木、采矿、建造长屋,然后被巨魔追得满地图跑的原始乐趣,又恰好是一名整天和容器、编排系统打…...
UABEA:终极跨平台Unity资源编辑器,免费解锁游戏资源分析新境界
UABEA:终极跨平台Unity资源编辑器,免费解锁游戏资源分析新境界 【免费下载链接】UABEA c# uabe for newer versions of unity 项目地址: https://gitcode.com/gh_mirrors/ua/UABEA UABEA(Unity Asset Bundle Extractor Avalonia&#…...
Biomni:生物医学图像分析从入门到精通,AI与传统CV融合实战
1. 项目概述:当AI学会“看”懂生物医学图像如果你在生物医学研究、药物发现或者临床诊断领域工作,大概率会和我一样,对海量的生物医学图像数据感到既兴奋又头疼。兴奋的是,这些图像——无论是显微镜下的细胞切片、组织病理学玻片&…...
ARM Cortex-X系列处理器参数配置与性能优化指南
1. ARM Cortex-X系列处理器参数配置概述在移动计算和嵌入式系统领域,ARM Cortex-X系列处理器代表了ARM架构中的高性能核心设计。作为芯片设计工程师,我经常需要对这些处理器的参数进行精细调整,以实现最佳的性能和能效平衡。处理器参数配置本…...
