
Java虚拟机
hglhjh
这个作者很懒,什么都没留下…
展开
-
自动内存管理机制(1)——运行时数据区域
Java程序设计语言、虚拟机、API类库——>JDK API 类库中SEAPI子集和虚拟机——>JRE 1.程序计数器:当前线程执行的字节码的行号指示器。针对java方法,如果是Native方法,计数器值为空。 唯一一个没规定OutOfMemoryError的区域。 2.java虚拟机栈:java方法执行的内存模型,方法执行同时原创 2017-11-13 19:56:32 · 159 阅读 · 0 评论 -
自动内存管理机制(2)——虚拟机对象的创建、内存布局和访问定位
一、对象的创建 虚拟机遇到一条new指令时,首先将去检测这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检测这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,则必须先执行相应的类加载过程。在类加载检查通过后,为新生对象分配内存。 分配内存的方法: 1)“指针碰撞”:Java堆中的内存是绝对规整的,用过的在一边,空闲的在一边,中间有个指针,指针移动。原创 2017-11-13 20:27:35 · 296 阅读 · 0 评论 -
自动内存管理机制(3)——与回收相关的小知识
一、引用 强引用:普遍存在的,类似“Object ojb=new Object()”这类,只要存在,永远不会回收被引用的对象。 软引用:还有用但并非必须的对象,在将要发生内存溢出溢出前将列入到回收范围中。 弱引用:非必须对象,只能生存到下一次垃圾收集前。 虚引用:一个对象是否有虚引用的存在,完全不会对其生存时间构成影响,设置虚引用的唯一目的是在这个对象被收集器回收时收到一个系统通知。原创 2017-11-13 21:00:08 · 163 阅读 · 0 评论 -
自动内存管理机制(4)——垃圾回收算法
垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。 ps:内存泄露是指该内存空间使用完毕之后未回收,在不涉及复杂数据结构的一般情况下,Java 的内存泄露表现为一个内存对象的生命周期超出了程序需要它的时间长度,我们有时也将其称为“对象游离”。 由于创建对象和垃圾回收器释放丢弃对象所占的内存空间,内存会出现碎片。碎片是分配给对象的内存块之间的空闲内存洞。碎片整理将所占用的堆内存移到堆的一端,转载 2017-11-13 21:20:56 · 172 阅读 · 0 评论