当前位置:首页 > 虚拟机 > 正文

jvm虚拟机执行流程


一、完整整理关于JVM—JAVA虚拟机的简介

性能优化的关键:JVM揭秘


JVM作为JAVA的灵魂,通过实现WORA(WriteOnce,RunAnywhere)原则赋予了Java代码跨平台的魔力。它的范围已经超越了Java,现在支持Scala、Kotlin等多种编程语言。作为主机上独立的执行环境,兼容不同的平台和操作系统。


Java的独特性


Java不同于传统的编译/解释型语言。它的代码首先被编译成字节码,然后由JVM执行解释。类加载器是这个过程的主角。它负责加载和链接.class文件,包括加载和链接的三个阶段:加载、验证、准备和运行初始化方法。需要注意的是线程安全,由于多线程会引起并发问题。


JVM架构细节


运行时数据区
方法区:存放类数据和方法代码,如果不合适的话处理可能会导致OutOfMemoryError。
堆区:对象和实例变量的存储位置,为所有线程共享,但不是线程安全的,很容易引起StackOverflowError。
栈区:线程私有,存放局部变量和方法调用,执行效率较高,但需要注意StackOverflowError。
程序计数器:每个线程都有一个独立的程序计数器,记录当前指令的地址。
本机方法栈:为支持本机方法而存在,并为每个新线程单独分配。
执行引擎:这里将字节码转换为机器码,解释器逐行执行,JIT编译器提供了优化性能的可能性。
垃圾收集器:自动清理堆内存中无用的对象,包括标记扫描策略,包括串行GC和并行GC。例如,G1GC适合优化多线程大堆应用程序。

交互与挑战


通过JNI,Java和非Java代码(如C/C++)通过native关键字和System无缝地协同工作。loadLibrary()加载本地库。常见的JVM问题包括ClassNotFoundExcecption、NoClassDefFoundError、OutOfMemoryError和StackOverflowError,这些都是开发过程中应密切关注的警告信号。


要深入了解JVM的世界,需要从基础开始,一直到源代码分析和高级应用程序。关键是掌握参数优化工具。JVM入门、源码深入分析、高级技术与实践等一系列小册子和相关主题,将帮助您成为JVM高手。


二、求java代码的详细执行过程?顺带说一下eclipse中怎么可以看到代码的执行步骤呢?谢谢最基本的操作是:
1首先在java文件中设置断点,然后debugas-->打开debugDialog,然后在对话框中选择类-->运行
时。程序到达断点时,您将被重定向到调试视图。
2.F5键和F6键都是单步调试F5是stepinto,表示进入当前行代码执行,
表示执行当前行代码并跳转到下一行
3.F7是跳出函数
4.F8执行到最后。
to(alsoF5)跳转入
er(alsoF6)跳过
turn(alsoF7)执行当前方法然后返回跳出该方法
lter逐渐过滤,直到遇到未过滤的位置或断点(设置Filter:window-preferences-java-Debug-stepFiltering)
重新启动调试运行,运行到遇到Go的地方断点
nt并设置程序中适合for循环的运行次数(设置breakpointview-右键hitcount)
t检查运行情况。执行表达式,显示执行值
实时监控变量变化
9.我们常说的断点是指行断点断点类型:字段(观察点)断点、方法断点。
10字段断点又称为watchpoint(监视点),在成员变量被读取或改变时暂停
11/leave在此方法时挂起(Run-methodbreakpoint)
12添加异常断点以捕获异常并在运行时挂起(续...)
断点属性:
1hitcountisdonePost-suspension用于循环
condition满足你的输入条件时(true\changed时)就会挂起
dthread当有多个线程时挂起这个线程
dVM挂起虚拟机
13变量值中的变量。在变量视图中选择变量并右键单击-更改值一次。
14调试过程中修改了一些代码后-->保存并构建-->继续-->在断点处重新挂起。