
Java虚拟机(JVM)
yamaxifeng_132
努力、奋斗
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JVM指令手册
1 栈和局部变量操作1.1 将常量压入栈的指令aconst_null 将null对象引用压入栈iconst_m1 将int类型常量-1压入栈iconst_0 将int类型常量0压入栈iconst_1 将int类型常量1压入栈iconst_2 将int类型常量2压入栈iconst_3 将int类型常量3压入栈iconst_4 将int类型常量4压入栈iconst_...转载 2020-04-19 21:04:54 · 189 阅读 · 0 评论 -
Shenandoah GC:一个来自OpenJDK12的全新并发压缩垃圾回收器
是不是才听说了JDK11的ZGC,并且还没搞懂?不好意思,OpenJDK12马不停蹄的带来了Shenandoah GC。概述JDK12新增的一个名为Shenandoah的GC算法,它的evacuation阶段工作能通过与正在运行中Java工作线程同时进行(即并发,concurrent),从而减少GC的停顿时间。Shenandoah的停顿时间和堆的大小没有任何关系,这就意味着无论你的堆是...转载 2020-04-14 10:15:12 · 397 阅读 · 0 评论 -
写代码实现栈溢出、堆溢出、永久代溢出、直接内存溢出
栈溢出(StackOverflowError) 堆溢出(OutOfMemoryError:Java heap space) 永久代溢出(OutOfMemoryError: PermGen space) 直接内存溢出一、堆溢出创建对象时如果没有可以分配的堆内存,JVM就会抛出OutOfMemoryError:java heap space异常。堆溢出实例:/** * 堆溢出 *...转载 2019-05-08 09:47:00 · 1930 阅读 · 0 评论 -
JVM参数设置、分析
不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置不同...转载 2019-04-28 20:50:43 · 192 阅读 · 0 评论 -
Tomcat 类加载器之为何违背双亲委派模型
1. 什么是类加载机制? 代码编译的结果从本地机器码转变成字节码,是存储格式的一小步,却是编程语言发展的一大步。Java虚拟机把描述类的数据从Class文件加载进内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外...转载 2019-01-26 13:56:35 · 271 阅读 · 1 评论 -
垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。可以。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。强制执行垃圾回收:Sy...转载 2019-01-24 14:14:20 · 387 阅读 · 0 评论 -
java 详解类加载器的双亲委派及打破双亲委派
http://www.jb51.net/article/102920.htmhttps://www.cnblogs.com/wxd0108/p/6681618.html其实,双亲委派模型并不复杂。自定义类加载器也不难!随便从网上搜一下就能搜出一大把结果,然后copy一下就能用。但是,如果每次想自定义类加载器就必须搜一遍别人的文章,然后复制,这样显然不行。可是自定义类加载器又不经常用,时间久...转载 2019-01-23 21:41:56 · 465 阅读 · 0 评论 -
Java HotSpot Client VM 和 Java HotSpot Server VM的配置
JDK包括2个JVM的实现Java HotSpot Client VM(-client),为在客户端环境中减少启动时间而优化;Java HotSpot Server VM(-server),为在服务器环境中最大化程序执行速度而设计。比较:Server VM启动比Client VM慢,运行比Client VM快。如何将VM设置成 Server VM:找到 [jre安装目录]/lib/i386/jvm...转载 2018-03-24 18:33:55 · 618 阅读 · 0 评论 -
记一次JVM调优之旅(斗争full gc)
笔记 http://www.cnblogs.com/syjkfind/p/3901774.html【症状】 用户操作数据导出时总会发生卡顿,后台占内存的定时任务发生时也会。JVM参数就不贴了,比较普通且相对合理。【思路】查gc日志是发生了full gc,tomcat日志零零散散有很多exception。另外凭着对代码的了解,触发时同时刻的日志显示正在执行较大数据量的原创 2017-01-18 15:48:27 · 538 阅读 · 0 评论 -
触发JVM进行Full GC的情况及应对策略
堆内存划分为 Eden、Survivor 和 Tenured/Old 空间,如下图所示:从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC,对老年代GC称为Major GC,而Full GC是对整个堆来说的,在最近几个版本的JDK里默认包括了对永生带即方法区的回收(JDK8中无永生带了),出现Full GC的时候经常伴随至少一次的Minor GC,但...转载 2017-01-18 14:39:46 · 449 阅读 · 0 评论 -
JVM虚拟机内存模型以及GC机制
JAVA堆的描述如下:内存由 Perm 和 Heap 组成. 其中Heap = {Old + NEW = { Eden , from, to } }JVM内存模型中分两大块,一块是 NEW Generation, 另一块是Old Generation. 在New Generation中,有一个叫Eden的空间,主要是用来存放新生的对象,还有两个Survivor Spac转载 2016-12-02 13:19:57 · 419 阅读 · 0 评论