![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm学习
长齐克斯
Java待就业
展开
-
JVM堆内存区
Heap ,一个JVM只有一个堆内存,堆内存大小是可以调节的。类加载器读取了这些文件后,一般会把什大学放到堆中?类,方法,常量,变量,保存我是所引用类型的真实对象堆内存中分为三个区域:新生区(伊甸园 Eden space)养老区永久区GC垃圾回收,主要在伊甸园区和养老区假设内存满了,OOM,堆内存不够JKD8以后, 永久存储区改了名字(元空间);新生区:类:诞生和成长的地方,甚至死亡;伊甸园:所有的对象都是在伊甸园区 new出来幸存区(0,1)经过研究,99%原创 2020-12-23 14:29:29 · 205 阅读 · 0 评论 -
java native关键字
凡事带native关键字,说明java 的作用范围达不到了,回去调用C语言底层库会进入本地 方法栈,调用本地方法本地接口 JNIJNI的作用:扩展java 的使用,融合不同的编程语言为java所用, 最初想融合c和c++.它在内存中专门开辟了一块标记区域:Native Method Stack,登记native方法在最终执行的时候加载本地方法库中的方法通过JNI目前该方法使用越来越少了,除非与硬件有关的应用...原创 2020-12-23 14:22:17 · 51 阅读 · 0 评论 -
JVM学习总结
1.JVM简略图2.类加载器:类是模板,对象是具体的,每new处理一个对象,jvm会给新对象分配一个地址空间1.虚拟机自带的加载器2.启动类(根) 加载器3.扩展类加载器4.应用程序加载器类加载器的类别BootstrapClassLoader(启动类加载器)c++编写,加载java核心库 java.*,构造ExtClassLoader和AppClassLoader。由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作Ex原创 2020-12-23 14:06:19 · 10799 阅读 · 0 评论 -
JVM方法区
Method Area 方法区方法区是被所有线程共享,所有字段和方法字节码,以及一些特殊方法,如构造函数,接口代码也在此定义,简单说,所有定义的方法的信息都保存在该区域,该区域属于共享空间;静态变量,常量,类信息(构造方法,接口定义),运行时的常量池存在方法区中,但是实例变量存在堆内存中,和方法区无关。Class对象是存放在堆区的,不是方法区!这点很多人容易犯错。类的元数据(元数据并不是类的Class对象!Class对象是加载的最终产品,类的方法代码,变量名,方法名,访问权限,返回值等等都是在方法区的原创 2020-12-23 14:24:03 · 92 阅读 · 0 评论 -
JVM运行时栈
栈内存:主管程序的运行,声明周期和线程同步程序结束,栈内存也就释放了对于栈来说,不存在垃圾回收问题,一旦线程结束,栈就over栈:8大基本类型 + 对象引用 + 实例的方法1.局部变量表局部变量表是一组变量值存储空间,用于存放方法参数和方法内部定义的局部变量。方法 Code 属性的 max_locals 数据项确定了该方法所需要分配的最大局部变量表的容量。局部变量不存在“准备”阶段,如果一个局部变量定义了但没有赋初始值是没法使用的。赋 null 值的操作在经过虚拟机 JIT 编译器优化之后.原创 2020-12-23 14:25:32 · 110 阅读 · 0 评论 -
GC常用算法
JVM在进行GC时,并不是对这三个区域统-一回收。 大部分时候,回收都是新生代~●新生代●幸幸区(form, to)●老年区GC两种类:轻GC (普通的GC), 重GC (全局GC)幸存区的from和to是动态变化的,谁空谁是toGC常用算法引用计数器算法:原理:此对象有一个引用,则+1;删除一个引用,则-1。只用收集计数为0的对象。缺点:无法处理循环引用的问题。如:对象A和B分别有字段b、a,令A.b=B和B.a=A,除此之外这2个对象再无任何引用,那实际上这2个对象已经不可能再被.原创 2020-12-23 14:27:10 · 159 阅读 · 0 评论 -
JVM类加载器与双亲委派机制
类是模板,对象是具体的,每new处理一个对象,jvm会给新对象分配一个地址空间1.虚拟机自带的加载器2.启动类(根) 加载器3.扩展类加载器4.应用程序加载器类加载器的类别BootstrapClassLoader(启动类加载器)c++编写,加载java核心库 java.*,构造ExtClassLoader和AppClassLoader。由于引导类加载器涉及到虚拟机本地实现细节,开发者无法直接获取到启动类加载器的引用,所以不允许直接通过引用进行操作ExtClassLoader (标准扩展类加.原创 2020-12-23 14:21:07 · 10600 阅读 · 0 评论