JVM
JVM
zhanghe_zht
这个作者很懒,什么都没留下…
展开
-
Java类加载过程
验证是连接阶段的第一步,这一阶段的目的是确保 Class 文件的字节流中包含的信息符合《Java 虚拟机规范》的全部约束要求,保证这些信息被当作代码运行后不会危害虚拟机自身的安全。初始化阶段是执行初始化方法 ()方法的过程,是类加载的最后一步,这一步 JVM 才开始真正执行类中定义的 Java 程序代码(字节码)。解析动作主要针对类或接口、字段、类方法、接口方法、方法类型、方法句柄和调用限定符 7 类符号引用进行。准备阶段是正式为类变量分配内存并设置类变量初始值的阶段,这些内存都将在方法区中分配。原创 2023-03-29 20:01:45 · 101 阅读 · 0 评论 -
jdk7、8、9默认垃圾回收器
dk1.7 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代)jdk1.8 默认垃圾收集器Parallel Scavenge(新生代)+Parallel Old(老年代)jdk1.9 默认垃圾收集器G1-XX:+PrintCommandLineFlagsjvm参数可查看默认设置收集器类型-XX:+PrintGCDetails亦可通过打印的GC日志的新生代、老年代名称判断...转载 2020-10-16 11:08:34 · 4349 阅读 · 0 评论 -
方法区的垃圾回收
很多人以为方法区(或者HotSopt VM中的永久代)是没有垃圾收集的,Java虚拟机规范中确实说过可以不要求虚拟机在方法区实现垃圾收集,而且性价比一般较低,在对的新生代生一般能回收70%~95%的空间,而永久代远低于此。永久代的垃圾手机主要回收两部分内容:废弃常量和无用的类。 回收废弃常量与回收Java堆中的对象非常相似。以常量池中字面量的回收为例,若字符串“abc”已经进入常量池中,但当前系统没有任何String对象引用常量池中的“abc”常量,也没有其他地方引用该字面量,若发生内存回收,且必要的话,转载 2020-12-02 21:52:41 · 353 阅读 · 0 评论 -
JVM调优常见命令
1)jps命令用于查询正在运行的JVM进程2)jstat可以实时显示本地或远程JVM进程中类装载、内存、GC、JIT编译等数据3)jmap用于显示当前Java堆和永久代的详细信息,可以用-dump生成内存快照,可以用-heap查看某一实例jvm配置4)jstack用于生成当前JVM的所有线程快照,线程快照是虚拟机每一条线程正在执行的方法,目的是定位线程出现长时间停顿的原因。https://blog.csdn.net/fuqianming/article/details/88633445...转载 2020-11-04 10:51:04 · 255 阅读 · 0 评论 -
G1垃圾回收器
G1是一个分代的,增量的,并行与并发的标记-复制垃圾回收器。它的设计目标是为了适应现在不断扩大的内存和不断增加的处理器数量,进一步降低暂停时间(pause time),同时兼顾良好的吞吐量。G1将内存划分一个个固定大小的region,每个region可以是年轻代、老年代的一个。内存的回收是以region作为基本单位的。G1垃圾回收器回收得到的空间是连续的。G1还有一个及其重要的特性:软实时(soft real-time)。所谓的实时垃圾回收,是指在要求的时间内完成垃圾回收。“软实时”则是指,用户可以指转载 2020-11-26 21:35:38 · 124 阅读 · 0 评论 -
CMS垃圾回收器
CMS(Concurrent Mark Sweep)收集器是一种以获取最短停顿时间为目标的收集器,CMS收集器采用标记–清除算法,运行在老年代。主要包含以下几个步骤:初始标记并发标记重新标记并发清除其中初始标记和重新标记仍然需要“Stop the world”。初始标记仅仅标记GC Root能直接关联的对象,并发标记就是进行GC Root Tracing过程,而重新标记则是为了修正并发标记期间,因用户程序继续运行而导致标记变动的那部分对象的标记记录。虽然CMS优点是并发收集、转载 2020-11-26 21:13:20 · 188 阅读 · 0 评论