![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java虚拟机
文章平均质量分 74
米修hefengwen
这个作者很懒,什么都没留下…
展开
-
java虚拟机-垃圾回收
1.垃圾回收概述垃圾回收需要解决三件事情:哪些内存需要回收、什么时候回收、如何回收。程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出有条不紊地执行着进栈和出栈操作,每一个栈帧中分配多少内存基本上是类结构确定下来时就已知的,因此这几个区域的内存分配和回收都具备确定性,在这几个区域内不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟原创 2016-08-03 17:17:18 · 220 阅读 · 0 评论 -
java虚拟机-垃圾收集算法
1.标记-清除算法算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。主要不足有两个:一个是效率问题,标记和清除两个过程的效率都不高;另一个是空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后再程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前触发另一次垃圾收集动作。2.复制算法将内存按原创 2016-08-03 17:42:28 · 244 阅读 · 0 评论 -
java虚拟机-垃圾收集器
1.Serial收集器(新生代收集器,使用复制算法)这是一个单线程的收集器,只会使用一个CPU或者一条收集线程去完成垃圾收集工作,更重要的是它进行垃圾收集时,必须暂停其他所有的工作线程,直到收集结束。Serial收集器对于运行在Client模式下的虚拟机来说是一个很好的选择。2.ParNew收集器(新生代收集器,使用复制算法)ParNew收集器其实就是Serial收集器的多线程版本,是原创 2016-08-05 10:07:27 · 225 阅读 · 0 评论 -
java虚拟机-内存分配与回收策略
1.对象优先在Eden分配大多数情况下,对象在新生代Eden区分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC。虚拟机提供了-XX:+PrintGCDetails这个收集器日志参数,告诉虚拟机在发送垃圾收集行为时打印内存回收日志,并且在进程退出的时候输出当前的内存区域分配情况。2.大对象直接进入老年代所谓的大对象是指,需要大量连续内存空间的java对象原创 2016-08-05 10:53:08 · 652 阅读 · 0 评论 -
java虚拟机-运行时数据区域
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。1.程序计数器程序计数器(Program Counter Register) 是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码原创 2016-08-03 10:05:51 · 372 阅读 · 0 评论 -
java虚拟机-HotSpot虚拟机对象
1.对象的创建虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定,为对象分配空间的任务等同于把一块确定大小的内存从java堆中划分出来。假设java堆内原创 2016-08-03 11:17:17 · 251 阅读 · 0 评论