![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM专题
文章平均质量分 94
JVM底层知识
小超同学卷起来
这个作者很懒,什么都没留下…
展开
-
从 JDK 源码级别彻底剖析 JVM类加载机制
自定义加载器: 负责加载**用户自定义路径下的类包**我们可以看到,扩展包和自己写的类都是通过Launcher实例C++调用Java代码创建JVM启动器,并且该类由引导类加载器负责加载创建其他类加载器)去加载的。是由引导类加载器加载完成的(null 的原因是String是Java生成的对象,C++看不到)是由扩展类加载器加载的是由应用程序类加载器加载的系统的类加载器就是应用程序类加载器应用程序类加载器的父类就是扩展类加载器。原创 2023-07-03 23:05:59 · 127 阅读 · 0 评论 -
JVM内存模型深度剖析与优化
main方法先执行,先开辟一个main方法的栈空间,然后调用compute方法,compute的栈空间在main栈空间的上面,等局部方法执行完,局部变量全部释放掉,等于把compute这块栈帧内存空间释放掉,说白了就是出栈,结束之后才会回调main方法,然后走完main方法,如果应用在启动的时候发生大量Full GC,通常都是由于永久代或元空间发生了大小调整,基于这种情况,一般建议在JVM参数中将MetaspaceSize和MaxMetaspaceSize设置成一样的值,并设置得比初始值要大。原创 2023-07-05 22:28:55 · 430 阅读 · 0 评论 -
JVM对象创建与内存分配机制深度剖析
1.jdk1.6 update14开始,在64bit操作系统中,JVM支持指针压缩2.jvm配置参数:UseCompressedOops,compressed压缩、oop(ordinary object pointer)对象指针3.启用指针压缩:-XX:+UseCompressedOops(原创 2023-07-06 23:33:00 · 216 阅读 · 0 评论 -
垃圾收集器ParNew&CMS与 底层三色标记算法详解
对于对象年龄应该为多少才移动到老年代比较合适,本例中一次minor gc要间隔二三十秒,大多数对象一般在几秒内就会变为垃圾,完全可以将默认的15岁改小一点,比如改为5,那么意味着对象要经过5次minor gc才会进入老年代,整个时间也有一两分钟了,如果对象这么长时间都没被回收,完全可以认为这些对象是会存活的比较长的对象,可以移动到老年代,而不是继续一直占用survivor区空间。黑色的对象代表已经扫描过, 它是安全存活的, 如果有其他对象引用指向了黑色对象, 无须重新扫描一遍。原创 2023-07-09 22:53:13 · 105 阅读 · 0 评论 -
垃圾收集器G1&ZGC详解
: gc过程中空出来的region是否充足阈值,在混合回收的时候,对Region回收都是基于复制算法进行的,都是把要回收的Region里的存活对象放入其他Region,然后这个Region中的垃圾对象全部清理掉,这样的话在回收过程就会不断空出来新的Region,一旦空闲出来的Region数量达到了堆内存的5%,此时就会立即停止混合回收,意味着本次混合回收就结束了。不过, 这里设置的“期望值”必须是符合实际的, 不能异想天开, 毕竟G1是要冻结用户线程来复制对象的, 这个停顿时。原创 2023-07-10 23:54:18 · 1369 阅读 · 0 评论 -
JVM调优工具详解及调优实战
增加如下配置行JAVA_OPTS。原创 2023-07-12 22:30:19 · 404 阅读 · 0 评论 -
JVM调优实战及常量池详解
s0还是常量池 中"zhuge”的引用,s1因为无法在编译期确定,所以是运行时创建的新对象”zhuge”的引用,s2因为有后半部分 new String(”ge”)所以也无法在编译期确定,所以也是一个新创建对象”zhuge”的引用;String中的intern方法是一个 native 的方法,当调用 intern方法时,如果池已经包含一个等于此String对象的字符串(用equals(oject)方法确定),则返回池中的字符串。出现,所谓右值是指等号右边的值,如:int a=1 这里的a为左值,1为右值。原创 2023-07-14 16:08:58 · 78 阅读 · 0 评论