java是一门内存动态分配、垃圾自动回收的高级编程语言。 1 运行时数据分区 方法区 用来存储已被虚拟机加载的类信息、常亮、静态变量、即时编译后的代码等数据;在hotspot虚拟机中又被称为永久代,此外字符串常量池已经在java7版本后移除永久代。 运行时常量池是方法区的一部分,具有动态性,用于存放 ...
分类:
其他好文 时间:
2017-10-16 00:11:19
阅读次数:
189
最近因项目存在内存泄漏,故进行大规模的JVM性能调优 , 现把经验做一记录。 一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老代) 永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx: ...
分类:
其他好文 时间:
2017-10-12 20:19:32
阅读次数:
118
jvm内存模型如下图 垃圾回收: 方法区: 这部分的垃圾回收性价比低,一般不要求回收,暂认为是永久代 heap:新生代和永久代之分。永久代主要回收废弃常量和无用的类。 垃圾回收算法: 1. 标记-清除算法 标记判断: a) 该类所有实例都已经被回收,也就是heap中,不存在该类任何实例。 b) 加载 ...
分类:
其他好文 时间:
2017-10-11 21:50:37
阅读次数:
147
参考: 1,通过反编译深入理解Java String及intern http://www.importnew.com/21024.html#comment-577875 2,Java8内存模型—永久代(PermGen)和元空间(Metaspace) http://www.cnblogs.com/pa ...
分类:
编程语言 时间:
2017-10-09 01:59:21
阅读次数:
169
Java 8彻底将永久代移除出了HotSpot JVM,将其原有的数据迁移至Java Heap或Metaspace。这一篇文章我们来总结一下Metaspace(元空间)的特性。如有错误,敬请指出,谢谢~ 一、引言:永久代为什么被移出HotSpot JVM了? 详见:JEP 122: Remove t ...
分类:
Web程序 时间:
2017-09-26 16:06:48
阅读次数:
244
1.堆的分代和区域(年轻代)Young Generation(eden、s0、s1 space) Minor GC(老年代)Old Generation (Tenured space) Major GC|| Full GC(永久代)Permanent Generation (Permanent sp... ...
分类:
编程语言 时间:
2017-09-20 11:56:05
阅读次数:
520
【正文】 声明:本文只是做一个总结,有关jvm的详细知识可以参考之前的系列文章,尤其是那篇:Java虚拟机详解04—-GC算法和种类。那篇文章和本文是面试时的重点。 面试必问关键词:JVM垃圾回收、类加载机制。 先把本文的目录画一个思维导图:(图的源文件在本文末尾) 一、Java引用的四种状态: 强 ...
分类:
编程语言 时间:
2017-09-19 15:34:25
阅读次数:
368
JVM垃圾回收算法(最全) 下面是JVM虚拟机运行时的内存模型: 1.方法区 Perm(永久代、非堆) 2.虚拟机栈 3.本地方法栈 (Native方法) 4.堆 5.程序计数器 1 首先的问题是:jvm如何知道那些对象需要回收 ? 目前两种标识算法、三种回收算法、两种清除算法、三种收集器 引用计数 ...
分类:
编程语言 时间:
2017-09-18 20:31:34
阅读次数:
217
一、jstat:虚拟机统计信息监控工具 图中,S0、S1(Survivor0、Survivor1)代表两个Survivor区,其中一个值为57.60%、另一个为0。E(Eden)使用了54.29%,可以看出会先使用一个S0和Eden。 O代表老年代使用的空间61.32%,P代表永久代使用空间99.6 ...
分类:
编程语言 时间:
2017-09-11 21:04:48
阅读次数:
133
java应用程序是应用在JVM上的,你们对JVM又有多少了解呢?JVM将内存分为三部分:NEW(年轻代)、Tenured(年老代)、Perm(永久代)。 (1)年轻代:用来存放java分配的新对象。 (2)年老代:经过垃圾回收没有被回收掉的对象被复制到年老代 (3)永久代:存放class、metho ...
分类:
其他好文 时间:
2017-09-09 19:39:13
阅读次数:
162