Java堆内存初始大小

Java堆内存初始大小

大厂面试题:

1、JVM垃圾回收时候如何确定垃圾?是否知道什么是GC Roots

2、你说你做过JVM参数调优和参数配置,请问如何盘点查看JVM系统默认值

3、你平时工作中用过的JVM常用基本配置参数有哪些?

4、强引用、软引用、弱引用、虚引用费别是什么?

5、请你谈谈对OOM的认识

6、GC垃圾回收算法与垃圾收集器的关系?分别是什么请你谈谈?

7、 怎么查看服务器默认的垃圾回收器是哪一个?

       生产上如何配置垃圾收集器的?

       谈谈你对垃圾收集器的理解?

8、G1垃圾收集器

9、生产环境服务器变慢,诊断思路和性能评估谈谈?

10、假如生产环境CPU占用过高,请谈谈你的分析思路和定位。

11、对于JDK自带的监控和性能分析工具用过哪些?一般你怎么用的?

 

1、java1.8堆内存基本情況

java1.8之後將最初的永久代取消了,由元空間取代。

Java堆内存初始大小_第1张图片

在java8中,永久代已經被移除,被元空間取代。元空间本质和永久代类似。

元空间(java8)与永久代(java7)之间最大的区别在于:

永久代使用的是JVM堆内存,但是java8以后的元空间并不在虚拟机中,而是使用本机物理内存。

因此,默认情况下,元空间大小受本地内存限制。类的元数据放入native memory,字符串池和类的静态变量放入java堆,这样可以加载多少类的元数据就不再由MaxPermSize控制,而是由系统实际可用空间决定。

2、堆内存初始大小

package com.wwl.jvm;

 

/**

 * -Xms 堆内存初始大小,默认内存大小:系统64/1

 * -Xmx 堆内存最大值,默认内存大小:系统4/1

 * -Xmn 堆内存年轻代大小

 */

public class InitailHeapSizeDemo {

    public static void main(String[] args) {

        long initialHeapSize = Runtime.getRuntime().totalMemory();

        long maxHeapSize = Runtime.getRuntime().maxMemory();

        System.out.println("-Xms = " + initialHeapSize / 1024 + "kb or " + initialHeapSize / 1024 / 1024 + "mb");

        System.out.println("-Xmx = " + maxHeapSize / 1024 + "kb or " + maxHeapSize / 1024 / 1024 + "mb");

 

    }

}

程序执行结果如下:初始堆大小为系统内存64/1,堆内存最大为系统内存4/1。

Java堆内存初始大小_第2张图片

你可能感兴趣的:(Java,Java,JUC分析)