51、JVM

1、谈谈你对JVM的理解:

2、什么是OOM有哪些方法分析:

3、JVM常见的参数调优你知道哪些:

4、JVM中类加载器有哪些:

 

 

 

 

1、类加载器四种类加载器:BootStrap启动类加载器、拓展类加载器、应用类加载器

2、双亲委派:类的加载是从上到下的,找到了就直接使用

3、沙箱隔离:自己写的类不能污染Java自带的类

一、Jvm的内存结构

1、本地方法栈:存放native 修饰的方法

2、程序计数器:存放执行方法的顺序和异常处理,记录了方法调用的执行情况

3、方法区:存放每个类的结构信息

4、栈:管运行,不存在垃圾回收,存放8种基本数据类型,实例方法,引用类型变量

5、堆:管存储,新生区,老年区,元数据,新生区又分为:伊甸区、幸存0区(from)、幸存1区(to)

运行时首先new出来的对象存放在新生区里面的伊甸区,伊甸区被放满之触发GC,GC处理完之后如果有存活的对象将会复制到幸存0区,第二次时伊甸区放满,触发第二次GC,将会在幸存0区和伊甸区中

进行垃圾回收,如果有对象存在,将对象复制到幸存1区,这样反复15次如果还有对象存活,将对象复制到老年区。

 

 

4、JVM 的垃圾回收算法(GC)

引用计数法:

复制算法:

标记清除:

标记压缩:

5、JMM java内存模型:可见性,原子性,有序性

6、查看JVM的两个参数

    public static void main(String[] args) {
        long maxMemory = Runtime.getRuntime().maxMemory();
        long totalMemory = Runtime.getRuntime().totalMemory();
        System.out.println("Xmx - MAX_MEMORY字节数: "+ maxMemory+"\t字节、"+ (maxMemory /(double)1024/1024)+ "MB");
        System.out.println("Xms - total_Memory字节数: "+ totalMemory+"\t字节、"+ (totalMemory /(double)1024/1024)+ "MB");
    }

配置JXM的参数:-Xms10m -Xmx10m -XX:+PrintGCDetails

OOM(OutOfMemoryError)内存溢出例子

public static void main(String[] args) {
        long maxMemory = Runtime.getRuntime().maxMemory();
        long totalMemory = Runtime.getRuntime().totalMemory();
        System.out.println("Xmx - MAX_MEMORY字节数: "+ maxMemory+"\t字节、"+ (maxMemory /(double)1024/1024)+ "MB");
        System.out.println("Xms - total_Memory字节数: "+ totalMemory+"\t字节、"+ (totalMemory /(double)1024/1024)+ "MB");
        test();
    }

    public static void test() {
        String str = "www.atguigu.com";
        while (true){
            str += str + new Random().nextInt(88888888)+new Random().nextInt(99999999);
        }
    }

 

posted @ 2021-07-06 15:57  shunnWcs  阅读(52)  评论(0)    收藏  举报