- 博客(8)
- 资源 (9)
- 收藏
- 关注
原创 String s="abc" 和 String s1=new String("abc")内存分析
String s=”abc” s是栈内变量,它的内存保存的是常量池的常量字符串对象对象”abc”的地址。常量池中的每个值只有一份。String s2 = “abc”; s和s2两个变量指向的是同一个地址,因此s==s2结果为true String s1=new String(“abc”); s1是栈内变量,它的内存保存的是堆中的new String对象的地址,new String在堆中...
2018-08-13 12:00:30 1574
转载 Major GC和Full GC的区别是什么?触发条件呢?
作者:RednaxelaFX 链接:http://www.zhihu.com/question/41922036/answer/93079526 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。针对HotSpot VM的实现,它里面的GC其实准确分类只有两大种:Parti...
2018-08-03 14:46:03 170
转载 Java8内存模型—永久代(PermGen)和元空间(Metaspace)
一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局部变量表(基本数据类型和对象引用)、操作数栈、方法出口等信息。栈的大小可以固定也可以动态扩展。当栈调用深度大于JVM所允许的范围,会抛出St...
2018-08-03 14:35:29 135
原创 内存回收机制
内存回收机制: 内存回收就是释放掉在内存中已经没用的对象。 首先,要判断怎样的对象是没用的对象。这里有2种方法: 1.采用标记计数的方法: 给内存中的对象给打上标记,对象被引用一次,计数就加1,引用被释放了,计数就减一,当这个计数为0的时候,这个对象就可以被回收了。当然,这也就引发了一个问题:循环引用的对象是无法被识别出来并且被回收的。所以就有了第二种方法: 2.采用根搜...
2018-08-02 11:41:03 880
原创 通过活跃的数据配置堆以及其他参数
一、通用法则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
原创 内存溢出问题
一、有没有遇到OutOfMemory问题?怎么解决的? 问题:PermGen space 和 Heap space; 常见原因: (1)、一次性从数据库取太多数据,导致内存加载的数据量太大。 (2)、集合类中有对象的引用,使用结束后未清空,GC不能回收。 (3)、代码中存在循环产生过多的重复对象。(例如把Object obj = new Object() 写在循环内部) 4、服务...
2018-08-01 20:40:05 310
转载 触发JVM进行Full GC的情况及应对策略
堆内存划分为 Eden、Survivor 和 Tenured/Old 空间,如下图所示: 从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC,对老年代GC称为Major GC,而Full GC是对整个堆来说的,在最近几个版本的JDK里默认包括了对永生带即方法区的回收(JDK8中无永生带了),出现Full GC的时候经常伴随至少一次的Minor GC,但...
2018-08-01 15:32:33 134
.gitignore
2020-08-27
jdk7linux64位 tar.gz.zip
2018-03-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人