java程序员把内存管理的工作交给虚拟机,一旦出现内存泄露或者溢出问题,如果不了解内存是怎样工作的,那么排查错误将是一件异常艰难的工作。 java内存区域与内存溢出异常 java运行时数据区域划分: 线程隔离的 1.程序计数器(Program Counter Register) 当前线程执行代码的行 ...
分类:
编程语言 时间:
2017-05-27 20:42:53
阅读次数:
209
转自:http://blog.csdn.net/chen77716/article/details/5695893 一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老代) 永久代(Perm) 其中New和Tenured属于堆内存 ...
分类:
其他好文 时间:
2017-05-01 00:20:47
阅读次数:
284
VM 本地方法栈 程序计数器 栈区:push/pop 堆区:为线程共享,内放对象和数组, 方法区:为线程共享 线程:是进程内并发执行的代码段, 一个线程就是一栈,栈内压入的方法帧 绿色的共享的 dll(windows) so(linux) *.java > *.class --> ClassLoad ...
分类:
其他好文 时间:
2017-04-28 22:14:06
阅读次数:
299
1.背景 2.为什么废弃永久代(PermGen) 3.深入理解元空间(Metaspace) 4.总结 正文分割线 一、背景 1.1 永久代(PermGen)在哪里? 根据,hotspot jvm结构如下(虚拟机栈和本地方法栈合一起了): 上图引自网络,但有个问题:方法区和heap堆都是线程共享的内存 ...
分类:
Web程序 时间:
2017-04-27 23:18:50
阅读次数:
343
目录 1.背景 2.为什么废弃永久代(PermGen) 3.深入理解元空间(Metaspace) 4.总结 正文分割线 一、背景 1.1 永久代(PermGen)在哪里? 根据,hotspot jvm结构如下(虚拟机栈和本地方法栈合一起了): 上图引自网络,但有个问题:方法区和heap堆都是线程共享 ...
分类:
Web程序 时间:
2017-04-27 11:40:58
阅读次数:
312
年轻代: HotSpot JVM把年轻代分为了三部分:1个Eden区和2个Survivor区(分别叫From和To),每次新创建对象时,都会分配到Eden区,当Eden区没有足够的空间进行分配时,虚拟机将发起一次Minor GC 。这些对象经过第一次Minor GC后,如果仍然存活,将会被移到Sur ...
分类:
其他好文 时间:
2017-04-08 15:54:27
阅读次数:
796
JVM垃圾回收与性能调优总结 JVM调优的几种策略 一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为: New(年轻代) Tenured(年老代) 永久代(Perm) 其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,P ...
分类:
其他好文 时间:
2017-04-05 01:00:07
阅读次数:
192
JMM对于一个想要深入了解java的程序猿来说是不可避免的一关,本文偏理论性,尽可能说的通俗易懂,如有不对的地方希望多多指正。 那我们先说一下jvm的主内存分配 1 java虚拟机栈(java virtual stack) 虚拟机栈是线程私有的,每个线程都有一个自己的虚拟机栈,是java方法执行的内 ...
分类:
编程语言 时间:
2017-03-16 20:25:09
阅读次数:
207
参考: http://blog.itpub.net/28912557/viewspace-1455299/ 一:堆内存溢出 Java创建的对象一般都是分配在堆中。我们在上一篇博文讲过,JVM的堆又分为 新生代、老年代、永久代(Java8已移除)。那么堆中出现OOM异常一般在就是因为在这几个地方内存不 ...
分类:
其他好文 时间:
2017-03-08 21:10:58
阅读次数:
118
一:Java技术体系模块图 二:JVM内存区域模型 1.方法区 也称"永久代” 、“非堆”, 它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小。 ...
分类:
编程语言 时间:
2017-02-28 15:35:31
阅读次数:
203