


太原达内IT培训
美国上市IT培训机构
4001118989
Java编程开发语言是目前大多数程序员都在学习的一种编程开发语言,而本文我们就通过案例分析来简单了解一下,Java虚拟机入门需要掌握哪些知识点。
JVM是运行在操作系统之上的,它与硬件没有直接的交互。先说一下JVM的内存区域,当函数开始运行时,JVM拿到自己的内存将自己的内存区域进行了分割,分为五块区域:线程共享的有堆、方法区,线程私有的有java栈、本地方法栈、程序计数器。
方法区是用来加载class文件的区域,静态变量、常量、类元信息、运行时的常量池存放在在方法区中,方法区在jdk1.7之前它又叫做永久代,但是jdk1.8之后改成元数据空间了;
new的对象都存放在堆中;
栈也叫栈内存,8种类型的基本变量、对象的引用变量、实例方法都是在函数的栈内存中分配,栈中的数据都是以栈帧的格式存在,每执行一个方法都会产生一个栈帧,保存到栈(后进先出)的顶部,顶部栈就是当前的方法,该方法执行完毕后会自动将此栈帧出栈。java栈随着线程创建而产生,随着线程的终结而销毁,每个线程在开辟、运行的过程中会单独创建这样的一份内存,有多少个线程就可能有多少个栈区;
本地方法栈是存储C++的native方法运行时候的栈区;程序计数器是指向当前程序运行的位置。
内存模型、类加载机制、GC是重点,性能调优部分更偏向应用,重点突出实践能力,编译器优化和执行模式部分偏向于理论基础,重点掌握知识点。
1、JMM如何保证原子性、一致性、可见性
在java中提供了两个高级的字节码指令monitorenter和monitorexit,使用对应的关键字Synchronized来保证代码块内的操作是原子的。
2、环境变量理解
classpath是javac编译器的一个环境变量。它的作用与import、package关键字有关。
package的所在位置,就是设置CLASSPATH当编译器面对importpackag这个语句时,它先会查找CLASSPATH所指定的目录,并检视子目录java/util是否存在,然后找出名称吻合的已编译文件(.class文件)。如果没有找到就会报错!
分区和内存模型
内存模型叫做内存结构。所谓模型是行为+数据也就是JVM的内存结构布局,加上内存的执行行为,栈中数据如何分配,堆中数据如何分配,堆栈数据运行时如何同步,加锁状态数据如何同步,也就是happenbefore那一套。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。