java20(JVM)

JVM结构

JVM

Runtime data area, 运行时数据区

1. method area

        在所有进程间共享

  类,常量,静态变量

2. heap

        在所有进程间共享。、

        对象,数组

  -Xms:设置堆初始值

  -Xmx:设置堆最大值

  分为old generation

            

          young generation

      幸存1区

      幸存2区

    永久代  // method area

  堆设置

    -Xms:初始堆大小

    -Xmx:最大堆大小

    -XX :NewSize=n:设置年轻代            大小

    -XX:NewRatio=n:设置年轻代和老年代的比值。为3代表年轻代/老年代=1:3

    -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。Survivor有两个,n=3表示Eden:Survivor=3:2,一个Survivor占整个年轻代的1/5

    -XX:MaxPermSize=n:设置持久化大小

  收集器设置

    -XX:+UseSerialGC:设置穿行收集器

    -XX:+UseParallelGC:设置并行收集器

    -XX:+UseParalledlOldGC:设置并行年老代收集器

    -XX:+UseConcMarkSweepGC:设置并发收集器

  垃圾回收统计信息

    -XX:+PrintGC

    -XX:+PrintGCDetails

    -XX:+PrintGCTimeStamps

    -Xloggc:filename

  并行收集器设置

    

3. java stack

        不共享

        每个线程对应一个stack,线程栈, 方法栈

        调整栈空间:java -Xss1m

        stackOverflowError

        OOM:out of memory内存不足

4. native method area

        不共享

5. program counter register

        不共享

6. 通过jvisualvm查看

        a. cmd -->jvisualvm

        b. 工具 --> 插件

  c. 搜索visual GC 安装

 7. 通过Jconsole查看类加载

finalize

   回收线程

daemon

  守护线程

GC

  garbage collection, 垃圾回收

heap(堆)

non-heap(非堆heap以外的空间)

off-heap(离堆位于jvm之外的空间)

final(修饰符)

  变量:不可改变(常量)

  函数:不可重写

  类:不可继承

finally

  try{}catch(){}finally{}

finalize(函数)

  对象被回收时调用

原文地址:https://www.cnblogs.com/8386blogs/p/7745520.html