JVM_1内存

在这里插入图片描述
jdk: 有编译器帮我们javac进行编译了。

javac Person.java 编译 生成Person.class文件

sublime可以查看2进制或16进制,查看 编码。oracle官网会有说明。
16进制,u2表示两位数。开头都是cafe babe

在这里插入图片描述

反编译 :javap -c XXX.class > XXX.java

在这里插入图片描述
装载:class -> JVM 类装载器

在这里插入图片描述
这就是双亲委派。根据全限定名来找,依次交给父类,找不到才交给自己。

tomcat就破坏了双亲委派,有自己的类加载器,比如说先加载自己路径下的。

JVM参考了冯诺依曼计算机模型。

在这里插入图片描述

在这里插入图片描述
左边两个(方法区和堆):进程相关。线程共享
右边3个:线程相关。线程私有

运行时常量池已经改成分布到方法区了。
在这里插入图片描述

方法区 和 堆 都会OOM

虚拟机栈:
栈帧:
在这里插入图片描述
在这里插入图片描述
网址:
在这里插入图片描述
例如:
在这里插入图片描述
每一个线程都有一个java虚拟机栈。
在这里插入图片描述
在这里插入图片描述
可以看到上边三个都是线程私有的。

方法区指向堆:static var = new Obj(); 静态成员变量直接new,就是方法区指向堆。

在这里插入图片描述
对象大小必须是8字节的整数倍。
Class Pointer就是指向方法区的。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

### JVM内存参数详解 #### JVM_XMX `JVM_XMX` 是JVM运行过程中分配的最大堆内存。例如,`-Xmx500m`表示JVM进程最多只能够占用500M内存。当堆内存不足时,JVM会尝试扩展堆,直到达到`JVM_XMX`所设定的最大值,如果无法扩展,则会抛出`OutOfMemoryError`错误提示[^3]。 #### JVM_XMS `JVM_XMS` 为JVM启动时分配的初始堆内存。例如,`-Xms200m`表示JVM启动时分配200M内存。默认情况下,初始堆大小是物理内存1/64,而最大堆大小是物理内存1/4。JVM在运行过程中会根据内存使用情况动态调整堆的大小,但不会超过`JVM_XMX`设定的最大值[^4]。 #### JVM_XMN `JVM_XMN` 表示年轻代(Young Generation)的大小。年轻代用于存放新创建的对象,这部分内存通常会被频繁回收(Minor GC)。合理设置年轻代的大小可以提高GC的效率。例如,`-Xmn2g`表示年轻代大小为2GB。堆内存通常分为年轻代和老年代(Old Generation),年轻代的大小会影响GC的性能[^5]。 #### JVM_MS `JVM_MS` 是JVM初始堆内存的另一种表示方式,通常用于控制元空间(Metaspace)的初始大小。在JDK 8及以上版本中,`-XX:MetaspaceSize`用于设置元空间的初始大小,而`-XX:MaxMetaspaceSize`用于设置元空间的最大大小。元空间用于存储类的元数据信息,与传统的永久代(PermGen)不同,它不受堆内存的限制,而是使用本地内存[^2]。 #### JVM_MMS `JVM_MMS` 通常用于表示JVM内存的最大限制,类似于`JVM_XMX`。在某些JVM实现中,`-XX:MaxHeapSize`可以用于设置堆的最大大小。例如,`-XX:MaxHeapSize=2g`表示JVM堆的最大大小为2GB。该参数主要用于控制JVM的最大内存使用,避免内存溢出问题[^1]。 ### 示例配置 以下是一个典型的JVM内存配置示例: ```bash java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC ``` - `-Xmx3550m`:设置JVM最大堆内存为3550MB。 - `-Xms3550m`:设置JVM初始堆内存为3550MB。 - `-Xmn2g`:设置年轻代大小为2GB。 - `-Xss128k`:设置每个线程的栈大小为128KB。 - `-XX:ParallelGCThreads=20`:设置并行GC的线程数为20。 - `-XX:+UseConcMarkSweepGC`:启用CMS垃圾回收器。 - `-XX:+UseParNewGC`:启用ParNew垃圾回收器[^5]。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值