JVM面试题 1~5

1.描述一下JVM加载class文件的原理机制?在这里插入图片描述

装载:查找并加载类的二进制数据
链接:

  • 验证:确保加载类的正确性,安全性(有些高手会编写class文件让JVM加载)
  • 准备:为类的静态属性分配内存,并将其赋予默认值(static int a = 30,此处a 赋予默认值 0 )
  • 解析:把类中的符号引用转换为直接引用

初始化:为类的静态属性赋予初始值(上面的a = 30)

2.什么时候类初始化?

  • 一个类实例化的时候,也就是new一个对象的时候
  • 调用一个类或接口的静态变量的时候,或者给静态变量赋值的时候
  • 调用一个类的静态方法时
  • 反射(Class.forName("…"))
  • 初始化一个类的子类的时候(首先初始化父类)
  • JVM启动是的启动类,就是文件名与类名相同的那个类

3.解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法
在这里插入图片描述
在这里插入图片描述
4.String.intern()方法
如果字符串常量池中已经包含了一个等于此String对象的字符串,则返回代表池(运行时常量池)中这个字符串的String对象;否则,将此String对象包含的字符串添加到常量池中并且返回此String对象的引用

String s1 = new String("hello");
System.out.printlen(s1.intern() == s1);//true

5.java中存在内存泄漏吗?举例说明

内存泄漏的5种情况

发布了42 篇原创文章 · 获赞 13 · 访问量 6499

猜你喜欢

转载自blog.csdn.net/weixin_43508555/article/details/104534613