JVM
陆多多
这个作者很懒,什么都没留下…
展开
-
java内存模型和线程
1.内存模型:java内存模型规定的所有的变量都存储在主内存,每条线程都有自己的工作内存。线程间变量值的传递均需要通过主内存来完成。java内存模型中规定了8种操作来完成,分别为lock,unlock,read,load,use,assign,store,write.虚拟机实现时必须保证这8种操作都是原子性的。其中对volatitle型的变量赋予了特殊规则,volatitle保证了变量的可见性和禁止原创 2016-09-25 20:08:10 · 437 阅读 · 0 评论 -
java TLAB分析
1) 由于堆是线程共享的,所以在堆上分配内存需要加锁,效率并不高,为了解决这个问题:sun的Hotspot JVM为所创建线程都分配了一块独立的空间TLAB(Thread Local Allocation Buffer),其大小由JVM根据运行的情况所得。 2) TLAB 仅作用于新生待的Eden space,因此在编写java程序时,多个小对象比大对象更加高效。转载 2017-02-06 19:37:54 · 612 阅读 · 0 评论 -
java.lang.OutOfMemoryError:GC overhead limit exceeded
最近发现线上邮件发送有异常,时发送时不发送,检查系统发现有OOM这个异常,java.lang.OutOfMemoryError:GC overhead limit exceeded,于是想系统了解下OOM的相关内容: 1.GC日志分析和各个代 Allocation Failure,表示引起垃圾回收的原因。 里面第一个中括号表示新生代的垃圾回收前后变化,外层括号表示整个堆内存变化,包含新生代和老转载 2017-02-08 22:33:15 · 508 阅读 · 0 评论