JVM 调优简要思想及简单案例 - 代码执行与内存区域
# JVM 调优简要思想及简单案例-代码执行与内存区域
以下是一段代码的执行,对应在 JVM 中的简要流程:
1. 程序启动,比如一个简单的 main 方法,JVM 创建一个线程去执行 main 方法
2. 在 main 方法中,JVM 对需要使用到的类进行加载
3. 程序计数器会同时记录执行到哪一段代码
4. 虚拟机栈保存线程的在执行过程中创建的局部变量
5. 代码执行过程中创建各种对象,并放在堆中保存
......
首先程序启动,执行入口都会有一个 main 方法,那 VJM 它也会创建一个线程去从 main 方法开始执行。
main 方法中,或者其他方法中,都会记录在哪段代码里,分别会使用到哪些类,JVM 它会把这些相应的类进行加载。
执行代码的时候需要能有一个程序,也就是程序计数器,记录执行到哪一段代码。
有虚拟机栈会保存变成一些局部变量。
然后是堆中,线程中创建的各种对象,都会放在堆中保存。
。。。。。。(其他过程略)
引出的问题:
前面有提到过,一段代码,其实主要是创建对象和执行一些方法什么的。我们也提到过,JVM 优化,其实主要是针对堆一块,堆这一块主要是保存对象实例的。
程序在执行过程中,其实会有不断地产生新对象,因为我们一个线程执行完成之后,它会有一些废弃的对象,另外一个线程来创另外一个线程执行的话,它也会有一些新对象的产生。那程序持续地运行,它会不断地产生新对象,这些不再需要的对象我们需要怎么处理?JVM 里面有一个垃圾回收机制,把我们不需要的对象进行回收掉。需要持续保留的对象不会进行回收。
版权声明: 本文为 InfoQ 作者【zarmnosaj】的原创文章。
原文链接:【http://xie.infoq.cn/article/4b9123a647221ebc3acbfe402】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论