JVM
Try_todo
这个作者很懒,什么都没留下…
展开
-
JVM 入门了解
1. 堆(Heap) 1. 新生代 包含 Eden区和两个Survivor区(大小 8:1:1) 每次有新对象进来的时候先存到Eden区,如果内存满了,此时会触发一次 Minor GC ,GC后将存活的对象放到 s1中(第一块Survivor区)。 第二次触发Minor GC时,GC后将Eden区的存活对象和s1中的存活对象一起存到s2(第二块Survivor区)中, (如果只有一块Surviv...原创 2019-07-16 09:44:30 · 114 阅读 · 0 评论 -
JVM 垃圾回收算法
找出无效对象: 1.引用记数法 堆中的每个对象对应一个引用计数器。当每一次创建一个对象并赋给一个变量时,引用计数器置为1。当对象被赋给任意变量时,引用计数器每次加1当对象出了作用域后(该对象丢弃不再使用),引用计数器减1,一旦引用计数器为0,对象就不可用从而可以被回收。 2.根搜索算法 通过一系列的名为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Ref...原创 2019-07-16 09:44:41 · 102 阅读 · 0 评论 -
JVM 对象的四种引用类型
强引用(Strong Reference) 永远不会被垃圾回收器回收,即使内存不足,JVM也会直接抛出OutOfMemoryError,不会去回收。如果想中断强引用与对象之间的联系,可以显示的将强引用赋值为null,这样一来,JVM就可以适时的回收对象了。 软引用(SoftReference) 当垃圾回收器发现软引用对象时,不会立即进行回收,而是标记该对象。弱引用可以和一个引用队列联合使用,当内存...原创 2019-07-16 09:43:32 · 165 阅读 · 0 评论 -
JVM 性能调优
1.栈优化 我们看到的StackOverFlow异常就是这块区域空间已满,由于遇到右括号就会释放空间,所以这块区域很少会因为单纯的一个方法内变量多导致这个异常。 一般是因为方法的递归调用层次太深,导致所有的局部变量都没有释放,继而出现StackOverFlow异常。 我们可以通过设置-Xss参数来制定这块空间的大小。 2.堆优化 -Xmx可以指定整个堆内存的最大值。 -Xms可以指定整个堆内存的...原创 2019-07-16 09:44:54 · 106 阅读 · 0 评论