- 博客(7)
- 问答 (1)
- 收藏
- 关注
原创 学习笔记--JVM之运行时数据区(5)方法区
方法区的基本理解方法区(Method Area)与Java堆一样,是各个线程共享的内存区域。方法区在JVM启动的时候被创建,并且它的实际的物理内存空间中Java堆区一样都是可以不连续的方法区的大小,跟堆空间一样,可以选择固定大小或者可拓展方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类,导致方法区溢出,虚拟机同样会抛出内存溢出错误:java.lang.OutOfMemoryError:PermGen space或者java.lang.OutOfMemoryError:Metas
2021-12-03 21:45:00
96
原创 学习笔记--JVM之运行时数据区(3)本地方法栈
首先来介绍一下本地方法接口什么是本地方法?一个Native Method就是一个Java调用非Java代码的接口。实际上就是native修饰的方法,比如getClass()方法。一个Native Method就是这样一个Java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java所特有,很多其他的编程语言都有这一机制,比如在c++中,你可以用extern “C”告知C++编译器去调用一个C函数。在定义一个native method时,并不能提供实现体(有些像定义一个Java的in
2021-10-21 21:53:11
127
原创 学习笔记--JVM之运行时数据区(2)虚拟机栈
内存中的栈和堆栈是运行时的单位,堆是存储的单位也就是 栈解决程序的运行问题,而程序如何执行,或者说如何处理数据。堆解决的是数据存储的问题。也就是数据怎么放、放在哪。
2021-10-21 20:21:39
133
原创 学习笔记--JVM之运行时数据区(1)
运行时数据区主要有五个部分:方法区;堆;程序计数器;本地方法栈;虚拟机栈java虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁,另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。有的数据区是单线程私有的,包括程序计数器、栈、本地栈。有的数据区是多个线程共享的,包括堆、堆外内存(永久代或元空间、代码缓存)对于方法区和堆,是一个进程对应着一份;而程序计数器本地方法栈、虚拟机栈是一个线程对应着一份。
2021-09-28 20:03:25
88
原创 JVM之双亲委派机制
java虚拟机对class文件采用的是按需加载方式,当需要使用该类时才会将他的class文件加载到内存生成class对象。加载某个类的class文件 时,java虚拟机采用的时双亲委派模式:把请求交给父类处理 它是一种任务委派模式工作原理1 如果一个类加载器收到了类加载请求,它不会自己先去加载,而是把这个请求委托给父类的加载器去执行;2 如果父类加载器还存在其父类加载器,就会进一步向上委托,依次递归,这个请求最终将达到顶层的启动类加载器3如果父类加载器可以完成类加载任务,就成功返回。倘若无法
2021-09-28 16:14:51
147
原创 JVM之类加载器的分类
虚拟机自带的加载器启动类加载器(引导类加载器 Bootstrap ClassLoader)这个类加载器是使用c/c++语言实现的,嵌套在JVM内部它用来加载java的核心库(JAVA_HOME/jre/lib/rt.jar、response.jar或sun.boot.class.path路径下的内容),用于提供JVM自身需要的类并不继承自Java.lang,ClassLoader,没有父类加载器。处于安全考虑,BootStrap启动类加载器只加载包名为Java、Java下、sun等开头.
2021-09-26 17:12:49
151
空空如也
gradle工程报错,找不到原因
2022-09-26
思源标准字体无法设置加粗问题
2022-09-14
重启虚拟机的network一直都是exited状态,各种解决方案都不好使。
2022-06-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人