美文网首页
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