了解JVM 特性

与平台无关

Java语言的一个重要特性就是与平台无关性。JVM是实现这一技术的关键。

JVM对类的加载机制请参考 Java 类加载器的工作机制

堆和栈的区别

jvm 中堆和栈属于不同的内存区域。栈区用于存放方法帧和局部变量,堆区用于存放对象,也就是对象分配在堆上。栈区比较小,但是速度快,栈区数据不在多线程之间存在共享,堆是被整个JVM所有的线程共享的。

JVM内存分配

1、基本类型数据变量和对象的引用都是在栈上分配的

2、堆内存用来存放new的对象和数组

3、类变量(static修饰的变量),程序在第一次加载的时候就在堆中为类变量分配内存,堆中的内存地址存放在栈中

4、实例变量:当new对象的时候,系统在堆中为其开辟不一定是连续的空间分配给变量,是根据零散的堆内存地址,通过哈希算法换算为一串数字来表示这个变量在堆中的物理位置,实例变量的生命周期———当实例变量的引用失去后,将会被GC列入可回收名单列表,但并不是立即释放堆中内存

5、局部变量:因为其声明在方法中或者某段代码里,执行他的时候会在栈中开辟内存,当局部变量一但脱离作用域,内存立即释放

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JVM内存模型Java虚拟机(Java Virtual Machine=JVM)的内存空间分为五个部分,分别是: ...
    光剑书架上的书阅读 2,620评论 2 26
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,372评论 11 349
  • 这篇文章是我之前翻阅了不少的书籍以及从网络上收集的一些资料的整理,因此不免有一些不准确的地方,同时不同JDK版本的...
    高广超阅读 15,737评论 3 83
  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 3,731评论 0 11
  • 1.一些概念 1.1.数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始...
    落落落落大大方方阅读 4,581评论 4 86