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,说明加载的类太多了。
网友评论