JVM学习
阿柳happy
这个作者很懒,什么都没留下…
展开
-
java虚拟机中垃圾回收的简单介绍
什么是垃圾对象?如何垃圾回收?何时垃圾回收?如何判断对象是垃圾对象方法1:引用计数法在对象中添加一个引用计数器,当有地方引用这个对象的时候,这个引用计数器的值就+1,当引用失效的的时候计数就-1 (但是如果堆内存中相互引用 )打印垃圾回收简单信息 -verbose:gc垃圾回收详细信息-XX:+PrintGCDetailsjava代码测试如下:...原创 2019-08-31 15:46:13 · 132 阅读 · 0 评论 -
内存分配策略
基本原则:优先分配到Eden区域大对象直接进入老年代长期存活的对象被分配到老年代空间分配担保动态对象的年龄判断对象优先在Eden上分配配置选用制定垃圾回收机制大数组看一下日志大对象直接进入老年代gc在eden执行频率比较高,如果处理大对象性能消耗比较大。所以将对象放入到老年代中大对象的值设定 -XX:PretenureSizeThresholdpublic class...原创 2019-09-02 08:21:00 · 77 阅读 · 0 评论 -
逃逸分析和栈上分配
栈上分配:栈上分配就是说创建对象的时候不仅仅可以在堆中进行,可以在栈上进行,有什么好处呢,我们都知道,当java方法执行的时候,是通过创建栈针,然后进栈出栈,先入后出的顺序,对象进栈创建,出栈销毁。这样就很方便。逃逸分析:分析对象作用域。如果判断这个对象作用域超出方法体,则发生逃逸。public class StackAlloction{public StackAlloction obj;...原创 2019-09-02 08:21:22 · 119 阅读 · 0 评论 -
JVM学习之对象创建
对象创建jvm中分配内存有两种策略,1、指针碰撞;基于内存空间连续2、空闲列表内存空间不连续(基于gc回收策略,如果gc有压缩内存空间的策略就是用1,否则2)线程安全性问题:高并发的时候就有线程安全问题在高并发的环境下可能会同一个时间会请求建立多个对象。解决方案:1、synchronized代码块,让创建对象一个一个的执行。(效率低)2、本地线程分配缓冲TLAB,每个线程在对...原创 2019-08-31 15:46:32 · 93 阅读 · 0 评论