![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
疯狂1024
热爱编程
展开
-
堆区、栈区、静态区
堆区:只存放类对象、线程共享,成员变量属于对象。所以也存放在堆区;方法区:有叫做静态存储区,存放class文件和静态数据,线程共享;栈区:存放方法局部变量,基本类型变量区、执行环境上下文、操作指令区、线程共享区;Class A{ private String a = "aa";//成员变量属于堆区 public boolean mthodB(){ String b = "...原创 2018-05-27 08:50:23 · 399 阅读 · 0 评论 -
jvm的采用何种清理方式
两个最基本的java回收算法:复制算法和标记清理算法 复制算法:两个区域A和B,初始对象在A,继续存活的对象被转移到B。此为新生代最常用的算法标记清理:一块区域,标记可达对象(可达性分析),然后回收不可达对象,会出现碎片,那么引出 标记-整理算法:多了碎片整理,整理出更大的内存放更大的对象两个概念:新生代和年老代 新生代:初始对象,生命周期短的永久代:长时间存在的对象整个java的垃圾回收是新生...原创 2018-05-27 08:53:25 · 952 阅读 · 0 评论 -
字符串常量池和堆中的非常量池(堆)创建字符串(new 和非new穿件 == 和equal比较)
简单分析:String str1= "hello", String str2="he"+"llo";之所以str1==str2返回true是因为两者都是在字符串常量池中(由于初始化就会在此区域分布内存)而常量池中的有个与栈区类似的特性,就是当str2指向的常量在常量区已存在时,他不会创建新的内存空间来存此常量,而是指向已有常量的内存(应该是以此节约空间),此时str1与str2这两个引用变量的值都...原创 2018-05-27 10:25:59 · 1199 阅读 · 0 评论 -
Java类加载机制
前言我们知道我们写的程序经过编译后成为了.class文件,.class文件中描述了类的各种信息,最终都需要加载到虚拟机之后才能运行和使用。而虚拟机如何加载这些.class文件?.class文件的信息进入到虚拟机后会发生什么变化?这些都是本文要讲的内容,文章将会讲解加载类加载的每个阶段Java虚拟机需要做什么事(加粗标红)。 类使用的7个阶段类从被加载到虚拟机内存中开始,到卸载出内存,它的整个生命周...转载 2018-05-23 18:34:13 · 88 阅读 · 0 评论