`
julyboxer
  • 浏览: 223384 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JVM小记

    博客分类:
  • java
阅读更多

JVM内存分布
方法区:包含类数据,方法数据
堆区:包含对象
Java栈:包含线程的临时数据。当线程运行的时候,每个java方法都有自己的栈桢。里面包含每个Java调用时的状态 
局部变量区,通过索引访问
操作数区,通过出栈入入栈访问
帆数据区 :用来支持常量池解析,正常方法返回及异常派发处理,
永远都不会在局部变量区及操作数区发现对象的拷贝,只会发现对象的引用

PC寄存器
本地方法区:包含本地方法

JVM类的装载系统
启动类加载器
扩展类加载器
自定义类加载器


类对于每个class字节码都有四次的验证:
第一次检查头文件是否正确  Class文件结构检查
第二次检查语法是否规范   类型数据的语义检查
第三次检查语法定义的类是否存在 字节码检查:确保操作数栈中总是包含正确的数值及正确的类型,它必须保证局部变量在赋予合适的值前不能够被访问,而且类的字段中总
是被赋予正确的类型值。类的方法被调用时总是传递正确的数值及类型的参数 .此次检查并不能够检查出所有的问题,如果尝试这么做,则会碰到"停机问题":不可能写出一个程序,用它
来判断作为其输入而读入的某个程序在执行时是否会停机。一个程序是否会停机被认为是程序的不可预测特征

第四次检查所引用的对象是否在内容存在:符号引用的验证

1.装载:查找并装载类型的二进制数据
2.连接:执行验证,确保被导入的数据的准确性  准备:为类变量分配内存,并初始化为默认值,解析:把类型中的符合转换为直接引用
3.初始化:把类变量初始化为正确的初始值


二进制兼容:
 对于两个类,一个类引用到另外一个类的方法。如果只是方法的内部改变了。。则此类不会重新编译。如果是方法的接口改变了。则会引用重新编译


JVM沙箱实现:
 1。对于一个类的加载过程,类加载器先从自己的父亲加载器中获取,以此循环直到最底层的启动类加载器。如果父亲类加载器返回为空。则在自身中尝试加载寻找。
 不同层次的类加载器所加载的类对应有不同的权限。
 2。又有。对于一个类加载成功后。都有多个策略文件以确定此类可以得到的权限.
  3.
  对于的MS的ActiveX的策略是要么全部通过,要么全部不通过。
 同样还没有解决的问题:
   不断分配内存直至内存耗尽
   不断生成线程导致每个事件处理都很慢 DOS
 JINI:
 查找服务组







分享到:
评论

相关推荐

    大方法的执行性能与调优过程小记1

    然而,这样的大方法在Hotspot JVM上可能会遇到性能问题。从描述中我们可以看到,一个名为`play()`的方法在代码重复拷贝后,执行时间随着代码量的增加而成倍增长。这是因为Java虚拟机(JVM)一开始是以解释模式执行...

    spark优化实践小记

    3. **监控GC行为**:通过设置JVM参数(如`-verbose:gc`, `-XX:+PrintGCDetails`, `-XX:+PrintGCTimeStamps`)来获取GC日志,分析GC频率、耗时以及暂停时间等信息,据此调整GC策略,优化内存使用效率。 #### 八、...

    财经面试知识点.zip

    目錄Java基础篇基础鎖多线程并发对象JVMJVM内存结构堆和差Java内存模型...JVM设计模式多线程JDK数据结构编程实习小记源码迈巴提斯春天Spring MVCJava基础篇基础Java的面向对象Java语言的三大特征封装、继承和多态Java...

    kaggle竞赛的birdclef2023已完结,小记首次参加kaggle,成绩为9%,bronze medal.zip

    这得益于Java虚拟机(JVM),它充当了代码和底层硬件之间的中介。 面向对象: Java是一种纯粹的面向对象编程语言,支持封装、继承和多态等面向对象的概念。这使得Java编写的代码更加模块化、可维护和可扩展。 多...

    Big-Data-Interview:大数据面试知识点

    目录Linux、IOLinux基础IO分布式分布式理论数据结构与算法RedisRedis基础redis内部数据结构Git操作系统数据库MeavnHBaseHiveSpark面试计算机网络Spring面试RedisElasticsearch分布式JVM设计模式多线程JDK数据结构...

    jdk1.8.0.301

    JDK 1.8.0.301是Java 8的一个更新版本,其中包含了Java编译器、Java虚拟机(JVM)、类库以及开发者需要的各种工具。这个版本是基于《JDK安装小记》中所使用的,因此对于学习和实践Java 8编程来说非常重要。 **1. ...

    jdk-14.0.1_windows-x64_bin.7z

    2. **Java虚拟机 (JVM)**:JVM是Java程序的运行环境,它可以解释执行字节码,并提供了垃圾收集机制,确保内存的有效管理。 3. **Java运行时环境 (JRE)**:JRE包含了运行Java程序所需的库和组件,但不包含开发工具。...

    jdk-14.0.1_osx-x64_bin.7z

    4. **Java运行时环境**(JRE):包含了执行Java程序所需的基本组件,如Java虚拟机(JVM)、核心类库等。 5. **开发工具**:如jar(打包工具)、jdb(调试器)、jconsole(监控工具)等,支持开发过程中的不同需求。 ...

    jdk-14.0.1_linux-x64_bin.7z

    JDK是Oracle公司提供的一个用于开发和运行Java应用程序的重要工具集,它包含了Java虚拟机(JVM)、编译器、调试器、Java类库等组件。 描述中提到的"linux"和"java"关键词进一步确认了这个文件是与Linux系统和Java...

Global site tag (gtag.js) - Google Analytics