JVM
文章平均质量分 90
JVM相关
T-Bryant
这个作者很懒,什么都没留下…
展开
-
JVM 运行时数据区
JDK版本:8基础知识"class文件"、“class content”、“Class对象”、"对象"的含义class文件:存储在磁盘上的.class文件(十六进制字节码文件)class content:类加载器加载class文件,存储在内存中的字节流,此时未解析Class对象:InstanceMirrorKlass类型实例对象:new出来的实例、newInstance得到的实例JDK1.8为什么用元空间取代永久代GC算法区分引用类型对象和类的元信息对象更方便避免动态代理使用不当造成OO原创 2021-03-18 16:47:48 · 254 阅读 · 0 评论 -
JVM 字符串常量池
JDK版本:8"常量池"有哪些class文件中的常量池运行时常量池字符串常量池class文件的常量池存储在磁盘上,class文件的Constant Pool,通过javap -verbose可以查看,静态的运行时常量池存储在instanceKlass实例(元空间),通过HSDB可以查看,动态的字符串常量池存储在虚拟机堆,StringTable(c++类,底层是HashTable),动态的c++的InstanceKlass对应java的InstanceOopDescc++的Type原创 2021-03-18 16:00:23 · 267 阅读 · 1 评论 -
JVM 分析.class文件
JDK版本:8基础知识java应用程序运行原理.java文件通过编译器编译,生成.class文件(字节码文件).class文件通过类加载器子系统加载,在元空间生成类的元信息类的元信息通过类加载器子系统验证、准备、解析、初始化,在JVM堆生成Class对象Class对象通过执行引擎执行大端与小端概念(摘自百度百科)大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放;这原创 2021-02-24 17:14:49 · 191 阅读 · 3 评论 -
JVM 类加载器子系统
JDK版本:8Class和Klass的区别Class:java类,java代码Klass:java类在JVM中的存储形式,c++代码有哪些常量池class文件的常量池(通过javap -verbose可以查看)运行时常量池(通过HSDB可以查看)字符串常量池(StringTable:c++类)类的加载过程加载阶段加载步骤类加载器子系统通过类的全限定名找到.class文件(渠道有很多种,如jar包、网络、动态生成、加密文件等,总之拿到.class文件)创建InstanceKlass类原创 2021-02-22 16:12:56 · 231 阅读 · 0 评论 -
JVM 学习JVM的第一步
做为一名java程序猿,想要深入java,实现摆脱业务的目标,JVM是门必修课,也是块敲门砖。JVM的理论知识非常抽象且枯燥,很多人还没入门就放弃了。因此笔者推荐从以下三个点作为入口,使用工具,直观地去了解JVM:学会查看JVM字节码指令学会查看JVM运行时数据区变化学会查看.class文件在JVM中的存在形式查看JVM字节码指令:IDEA插件jclasslib菜单栏 -> File -> Settings -> Plugins 搜索jclasslib,安装完成后重启IDE原创 2021-02-20 10:16:00 · 219 阅读 · 3 评论 -
JVM JVM常用参数及推荐方案
JVM参数-Xmx 最大堆内存-Xms 最小堆内存-Xmn 新生代内存-XX:MaxMetaspaceSize 最大元空间内存-XX:MetaspaceSize 初始元空间内存-XX:+UseConcMarkSweepGC 使用CMS垃圾回收器-XX:+UseCMSInitiatingOccupancyOnly 开启使用回收阈值-XX:CMSInitiatingOccupancyFraction=70 指定回收阈值70%-XX:+ExplicitGCInvo原创 2021-02-19 16:36:45 · 645 阅读 · 0 评论