- 博客(4)
- 收藏
- 关注
原创 类加载
1、类加载过程类加载时机「加载」将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在内存上创建一个java.lang.Class对象用来封装类在方法区内的数据结构作为这个类的各种数据的访问入口。「验证」主要是为了确保class文件中的字节流包含的信息是否符合当前JVM的要求,且不会危害JVM自身安全,比如校验文件格式、是否是cafe baby魔术、字节码验证等等。「准备」为类变量分配内存并设置类变量(是被static修饰的变量,变量不是常量
2021-03-03 10:16:25
99
原创 Java内存区域
Java内存区域1、Java内存结构内存结构 程序计数器 当前线程所执行字节码的行号指示器。若当前方法是native的,那么程序计数器的值就是undefined。线程私有,Java内存区域中唯一一块不会发生OOM或StackOverflow的区域。 虚拟机栈 就是常说的Java栈,存放栈帧,栈帧里存放局部变量表等信息,方法执行到结束对应着一个栈帧的入栈到出栈。线程私有,会发生StackOverflow。 本地方法栈 与虚拟机栈的作用是一样的,只不过
2021-03-03 10:11:40
76
原创 new Object()到底占用几个字节?
对象的指向先来看一段代码:packagecom.zwx.jvm;publicclassHeapMemory{privateObjectobj1=newObject();publicstaticvoidmain(String[]args){Objectobj2=newObject();}}上面的代码中,obj1 和obj2在内存中有什么区别?我们先来回忆一下JVM系列1的文章中有提到,方法区存储每个...
2021-03-03 10:08:31
149
原创 JVM
1、什么是JVM?在哪?JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。百度的解释云里雾里,对于我们Java程序员,说白了就是: JVM本质上是一个程序,它能识别.class字节码文件(里面存放的是我们对.java编译后产生的二进制代码),并且能够解析它的指令,最终调用操作系统上的函数,完成我们想要的操作! 关于Java语言的跨平台性,就是因为..
2021-03-03 09:59:33
134
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人