JVM内存分布
方法区:包含类数据,方法数据
堆区:包含对象
Java栈:包含线程的临时数据。当线程运行的时候,每个java方法都有自己的栈桢。里面包含每个Java调用时的状态
局部变量区,通过索引访问
操作数区,通过出栈入入栈访问
帆数据区 :用来支持常量池解析,正常方法返回及异常派发处理,
永远都不会在局部变量区及操作数区发现对象的拷贝,只会发现对象的引用
PC寄存器
本地方法区:包含本地方法
JVM类的装载系统
启动类加载器
扩展类加载器
自定义类加载器
类对于每个class字节码都有四次的验证:
第一次检查头文件是否正确 Class文件结构检查
第二次检查语法是否规范 类型数据的语义检查
第三次检查语法定义的类是否存在 字节码检查:确保操作数栈中总是包含正确的数值及正确的类型,它必须保证局部变量在赋予合适的值前不能够被访问,而且类的字段中总
是被赋予正确的类型值。类的方法被调用时总是传递正确的数值及类型的参数 .此次检查并不能够检查出所有的问题,如果尝试这么做,则会碰到"停机问题":不可能写出一个程序,用它
来判断作为其输入而读入的某个程序在执行时是否会停机。一个程序是否会停机被认为是程序的不可预测特征
第四次检查所引用的对象是否在内容存在:符号引用的验证
1.装载:查找并装载类型的二进制数据
2.连接:执行验证,确保被导入的数据的准确性 准备:为类变量分配内存,并初始化为默认值,解析:把类型中的符合转换为直接引用
3.初始化:把类变量初始化为正确的初始值
二进制兼容:
对于两个类,一个类引用到另外一个类的方法。如果只是方法的内部改变了。。则此类不会重新编译。如果是方法的接口改变了。则会引用重新编译
JVM沙箱实现:
1。对于一个类的加载过程,类加载器先从自己的父亲加载器中获取,以此循环直到最底层的启动类加载器。如果父亲类加载器返回为空。则在自身中尝试加载寻找。
不同层次的类加载器所加载的类对应有不同的权限。
2。又有。对于一个类加载成功后。都有多个策略文件以确定此类可以得到的权限.
3.
对于的MS的ActiveX的策略是要么全部通过,要么全部不通过。
同样还没有解决的问题:
不断分配内存直至内存耗尽
不断生成线程导致每个事件处理都很慢 DOS
JINI:
查找服务组
分享到:
相关推荐
然而,这样的大方法在Hotspot JVM上可能会遇到性能问题。从描述中我们可以看到,一个名为`play()`的方法在代码重复拷贝后,执行时间随着代码量的增加而成倍增长。这是因为Java虚拟机(JVM)一开始是以解释模式执行...
3. **监控GC行为**:通过设置JVM参数(如`-verbose:gc`, `-XX:+PrintGCDetails`, `-XX:+PrintGCTimeStamps`)来获取GC日志,分析GC频率、耗时以及暂停时间等信息,据此调整GC策略,优化内存使用效率。 #### 八、...
目錄Java基础篇基础鎖多线程并发对象JVMJVM内存结构堆和差Java内存模型...JVM设计模式多线程JDK数据结构编程实习小记源码迈巴提斯春天Spring MVCJava基础篇基础Java的面向对象Java语言的三大特征封装、继承和多态Java...
这得益于Java虚拟机(JVM),它充当了代码和底层硬件之间的中介。 面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多...
目录Linux、IOLinux基础IO分布式分布式理论数据结构与算法RedisRedis基础redis内部数据结构Git操作系统数据库MeavnHBaseHiveSpark面试计算机网络Spring面试RedisElasticsearch分布式JVM设计模式多线程JDK数据结构...
JDK 1.8.0.301是Java 8的一个更新版本,其中包含了Java编译器、Java虚拟机(JVM)、类库以及开发者需要的各种工具。这个版本是基于《JDK安装小记》中所使用的,因此对于学习和实践Java 8编程来说非常重要。 **1. ...
2. **Java虚拟机 (JVM)**:JVM是Java程序的运行环境,它可以解释执行字节码,并提供了垃圾收集机制,确保内存的有效管理。 3. **Java运行时环境 (JRE)**:JRE包含了运行Java程序所需的库和组件,但不包含开发工具。...
4. **Java运行时环境**(JRE):包含了执行Java程序所需的基本组件,如Java虚拟机(JVM)、核心类库等。 5. **开发工具**:如jar(打包工具)、jdb(调试器)、jconsole(监控工具)等,支持开发过程中的不同需求。 ...
JDK是Oracle公司提供的一个用于开发和运行Java应用程序的重要工具集,它包含了Java虚拟机(JVM)、编译器、调试器、Java类库等组件。 描述中提到的"linux"和"java"关键词进一步确认了这个文件是与Linux系统和Java...