美文网首页
jvm实战一、对象和内存模型

jvm实战一、对象和内存模型

作者: 要不再等等 | 来源:发表于2019-06-26 23:34 被阅读0次

    Server是根据操作系统环境自动判断是Server还是client模式
    mixed mode是解释+编译(有些代码不一定适合编译成二进制代码)

    jps:打印出jvm进程
    jinfo -flags pid:打印出进程的jvm运行时信息


    Car class相当于模版类
    发射有几种方式:class.forName classloader getClass()
    classLoader父类:Object

    找出有哪些类加载器:
    getClass().getClassLoader().getParent().getParent() null C++的 java拿不到(BootrapClassLoader)
    getClass().getClassLoader().getParent() ExtClassLoader
    getClass().getClassLoader() AppClassLoader
    Object.class.getClass().getClassLoader() null->BootrapClassLoader

    为什么可以直接使用Object类?
    Object在rt.jar中,jvm在启动的时候已经使用BootrapClassLoader加载了rt.jar

    public class String{
      public static void main(String[] args){
        new String();
      }
    }
    

    没有找到main方法,说明不是加载新建的String类,而是委托父加载器加载的,如果都加载不到,才会自己加载,这就是双亲委托机制。
    沙箱安全机制就是保证安全性,不让jdk代码被篡改。

    为什么要用native方法?
    java不能操作jvm底层代码,native融合了不同的编程语言给java调用。


    橙色的地方会给gc管理。
    方法区:静态变量,类信息,常量池,方法的定义,构造器。

    方法区是规范,永久代是实现,元空间也是方法区的一种实现。

    如果出现java.lang.OutOfMemoryError:PerGen space,说明加载的类太多了。

    相关文章

      网友评论

          本文标题:jvm实战一、对象和内存模型

          本文链接:https://www.haomeiwen.com/subject/bvrxcctx.html