查看JVM使用的什么垃圾收集器

- 日理万妓 2022-06-11 05:44 169阅读 0赞

一、方法一

打印虚拟机所有参数

[root@localhost ~]# java -XX:+PrintFlagsFinal -version | grep :
uintx InitialHeapSize := 258689024 {product}
uintx MaxHeapSize := 4139778048 {product}
bool PrintFlagsFinal := true {product}
bool UseCompressedOops := true {lp64_product}
bool UseParallelGC := true {product}
第三列”=”表示第四列是参数的默认值,而”:=” 表明了参数被用户或者JVM赋值了。

二、方法二

[root@localhost ~]# java -XX:+PrintCommandLineFlags -version

-XX:InitialHeapSize=258689024 -XX:MaxHeapSize=4139024384 -XX:+PrintCommandLineFlags -XX:+UseCompressedOops -XX:+UseParallelGC

让我们看下另外一个参数,事实上这个参数非常有用: -XX:+PrintCommandLineFlags。这个参数让JVM打印出那些已经被用户或者JVM设置过的详细的XX参数的名称和值。

换句话说,它列举出 -XX:+PrintFlagsFinal的结果中第三列有”:=”的参数。以这种方式,我们可以用-XX:+PrintCommandLineFlags作为快捷方式来查看修改过的参数。

参数解读:

-XX:+UseParallelGC

-XX:+UseParallelGC:选择垃圾收集器为并行收集器。此配置仅对年轻代有效。即上述配置下,年轻代使用并发收集,而年老代仍旧使用串行收集。

-XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:+UseParallelOldGC
-XX:+UseParallelOldGC:配置年老代垃圾收集方式为并行收集。JDK6.0支持对年老代并行收集。

Parallel Scavenge收集器架构中本身有PS MarkSweep收集器来进行老年代收集,并非直接使用了Serial Old收集器,但是这个PS MarkSweep收集器与Serial Old的实现非常接近,所以在官方的许多资料中都是直接以Serial Old代替PS MarkSweep进行讲解,这里笔者也采用这种方式。

三、方法三

  1. import java.lang.management.GarbageCollectorMXBean;
  2. import java.lang.management.ManagementFactory;
  3. import java.util.List;
  4. public class x {
  5. public static void main(String args[]) {
  6. List<GarbageCollectorMXBean> l = ManagementFactory.getGarbageCollectorMXBeans();
  7. for(GarbageCollectorMXBean b : l) {
  8. System.out.println(b.getName());
  9. }
  10. }
  11. }

输出:

  1. [root@localhost ~]# java x
  2. PS Scavenge
  3. PS MarkSweep

发表评论

表情:
评论列表 (有 0 条评论,169人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JVM-垃圾收集

           通过学习了解到现在商用的JVM中的垃圾收集采用的是分代收集算法,即针对不同年代采用不同的收集算法。在JVM中,GC主要作用于堆内存中,堆内存又被划分为新生代和老年

    相关 JVM-垃圾收集

    > 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。 在了解这些收集器的时候,要了解每一种收集器是单线程还是多线程、采用的是什么算法、优缺点。了解这些

    相关 JVM垃圾收集

    对象已死? 引用计数算法 概念:给对象添加一个引用计数器,每当有地方引用它时,计数器就加1,当引用失效时,计数器就减,任何时刻计数器为0的对象就是不可能再被使