![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM内存
文章平均质量分 59
JamesGan96
不念过往,不畏将来.不好高骛远,不妄自菲薄.不忘初心,方得始终。
展开
-
JVM运行内存模型
JVM运行内存模型图:注意下图中的线程共享问题。 JVM运行内存分为5个部分:1.虚拟机栈(VM Stack):是类加载器加载的类文件(字节码)的方法执行的内存模型: 当一个方法执行时虚拟机栈会产生一个“栈帧”,在栈帧中保存方法信息。方法的执行-结束过程就是“栈帧”在虚拟机栈中的一个入-出栈过程。本地方法栈:基本类似于虚拟机栈,但是针对的对象是虚拟机本地的方法。堆:保存对象实例,几乎所原创 2017-06-07 15:55:51 · 351 阅读 · 0 评论 -
GC垃圾回收机制
为什么要有GC: 对象的创建是在堆内存中分配的,内存的大小是一定的,不可能无限的消耗内存资源,所以对象必须有它的生命周期,生-死。 Java不同于c,在c中对象的创建有构造函数,对象的消亡有析构函数。而java采用的虚拟机自主回收,不再需要开发人员手动释放对象而产生的内存泄漏问题。如何判定一个对象需要被回收 1.引用计数器:在jdk1.2之前,虚拟机采用在对象创建时,附加携带一个引用计数器。原创 2017-06-07 16:45:04 · 336 阅读 · 0 评论 -
堆内存的GC机制
堆内存的模型:新生代的GC新生代:新生代分为Eden区和Survivor区,分配比例为8:2;而Survivor区又1:1分为from区和to区。这样分配的理由是,新生代中的对象存活率低,大概只有10%。 这种情况下新生区采用的GC算法是:复制算法,我们知道复制算法最大的弊端就是内存的浪费,但是在低存活率的新生区。只需要空余10%的内存进行效率高的复制算法也是划算的。在第一次GC之前,对象的创建原创 2017-06-07 17:06:12 · 439 阅读 · 0 评论