1.概述
Java虚拟机:Java Virtual Machine。正是有了Java虚拟机,Java语言实现了跨平台的特性,一次编译,多处运行。
目前使用范围最广的虚拟机就是Hotspot VM,它是OracleJDK和OpenJDK中的默认Java虚拟机。
相比于其他需要自己管理内存的语言来说,我们在开发Java程序的过程中,是不太需要刻意去关注Java语言的内存管理机制,因为Java虚拟机为我们提供了自动内存管理的机制。
也正是因为我们控制内存的权力交给了Java虚拟机,所以可以在开发过程非常的便捷,不过也正是因为这个原因,一旦出现了内存泄漏
和内存溢出
方面的问题,如果不了解虚拟机是怎样管理内存的,那排查错误将会成为一项异常艰难的工作。
在绝大多数情况下,提升硬件性能无法等比例提升程序的运行性能和并发能力,甚至有可能对程序运行状况没有任何改善。
那么,对软件参数的调优则至关重要。目前商用的高性能Java虚拟机都提供了相当多的优化参数和调节手段,用于满足应用程序在实际生产环境中对性能和稳定性的要求。
2.相关概念
JDK(Java Development Kit):Java开发工具包,包含Java语言、Java类库、Java虚拟机。是提供给Java开发者使用的。
JRE(Java Runtime Environment):Java运行时环境,包含Java类库、Java虚拟机 。为使用Java语言编写的程序提供了运行所需的环境。
JIT Compiler:即时编译器(Just In Time Compiler),在Java环境中,即时编译器就是一个把Java的字节码转换成处理器可执行指令的程序。
3.内存管理
正是因为Java虚拟机提供了对内存自动管理的机制,使得我们在开发过程中才无需关注内存问题。但是一旦出现内存泄漏和内存溢出问题,就需要我们了解Java虚拟机管理内存的原理,才能更好解决这些问题。
Java虚拟机在执行Java程序时,会把它所管理的内存划分为不同的数据区域。
有的区域随着虚拟机进程的启动而一直存在,随着虚拟机进程的结束而销毁,有的区域则是随着用户线程的启动和结束而存在和销毁。
有的区域是线程共享的,有的区域则是线程隔离的。
最后,欢迎关注微信公众号一起交流