JVM
java外脑
一个码农界的小学生,渴望成为大牛。
展开
-
内存溢出问题
一、有没有遇到OutOfMemory问题?怎么解决的? 问题:PermGen space 和 Heap space; 常见原因: (1)、一次性从数据库取太多数据,导致内存加载的数据量太大。 (2)、集合类中有对象的引用,使用结束后未清空,GC不能回收。 (3)、代码中存在循环产生过多的重复对象。(例如把Object obj = new Object() 写在循环内部) 4、服务...原创 2018-08-01 20:40:05 · 310 阅读 · 0 评论 -
通过活跃的数据配置堆以及其他参数
一、通用法则1:将java堆的初始值-Xms和最大值-Xmx设置为老年代活跃数据大小的3~4倍。(注意不要超过JVM可用的物理内存数。)二、通用法则2:永久代的初始值-XX:PermSize及最大值-XX:MaxPermSize应该比永久代活跃数据大1.2~1.5倍三、补充法则:新生代空间应该为老年代空间活跃数据的1~1.5倍参考表: ...原创 2018-08-02 10:45:53 · 220 阅读 · 0 评论 -
内存回收机制
内存回收机制: 内存回收就是释放掉在内存中已经没用的对象。 首先,要判断怎样的对象是没用的对象。这里有2种方法: 1.采用标记计数的方法: 给内存中的对象给打上标记,对象被引用一次,计数就加1,引用被释放了,计数就减一,当这个计数为0的时候,这个对象就可以被回收了。当然,这也就引发了一个问题:循环引用的对象是无法被识别出来并且被回收的。所以就有了第二种方法: 2.采用根搜...原创 2018-08-02 11:41:03 · 881 阅读 · 0 评论 -
Java8内存模型—永久代(PermGen)和元空间(Metaspace)
一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局部变量表(基本数据类型和对象引用)、操作数栈、方法出口等信息。栈的大小可以固定也可以动态扩展。当栈调用深度大于JVM所允许的范围,会抛出St...转载 2018-08-03 14:35:29 · 136 阅读 · 0 评论 -
Major GC和Full GC的区别是什么?触发条件呢?
作者:RednaxelaFX链接:http://www.zhihu.com/question/41922036/answer/93079526来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。针对HotSpot VM的实现,它里面的GC其实准确分类只有两大种:Parti...转载 2018-08-03 14:46:03 · 171 阅读 · 0 评论