随笔分类 -  jvm优化

摘要:逃逸分析的基本行为就是分析对象动态作用域:当一个对象在方法中被定义后,它可能被外部方法所引用,称为方法逃逸。甚至还有可能被外部线程访问到,譬如赋值给类变量或可以在其他线程中访问的实例变量,称为线程逃逸。方法逃逸的几种方式如下:public class EscapeTest { public stat 阅读全文
posted @ 2020-04-20 08:56 那些年的代码 阅读(313) 评论(0) 推荐(0)
摘要:Java VM 常用设置记录 -Xms256m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m 阅读全文
posted @ 2020-04-06 08:57 那些年的代码 阅读(931) 评论(0) 推荐(0)
摘要:1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕死的,如果分代的话, 阅读全文
posted @ 2020-04-02 18:23 那些年的代码 阅读(1035) 评论(0) 推荐(0)
摘要:Eden区是一块,Survivor区是两块。 Eden区和Survivor区的比例是8:1:1 JVM内存的结构为 堆:存放对象 栈:运行时存放栈帧 程序计数器 方法区:存放类和常量 Jdk 1.8之后好像取消了方法区,直接将永久代放到了本地内存里面。 阅读全文
posted @ 2020-04-02 18:07 那些年的代码 阅读(4254) 评论(0) 推荐(0)
摘要:JAVA堆内存管理是影响性能主要因素之一。堆内存溢出是JAVA项目非常常见的故障,在解决该问题之前,必须先了解下JAVA堆内存是怎么工作的。 先看下JAVA堆内存是如何划分的,如图: JVM内存划分为堆内存和非堆内存,堆内存分为年轻代(Young Generation)、老年代(Old Genera 阅读全文
posted @ 2020-03-27 18:01 那些年的代码 阅读(2426) 评论(0) 推荐(0)
摘要:1.虚拟机栈(本地变量表)引用的对象 2.方法区静态属性引用的对象 3.方法区常量引用的对象 4.本地方法栈JNI(一般指naive方法)中引用的对象 常说的GC(Garbage Collector) roots,特指的是垃圾收集器(Garbage Collector)的对象,GC会收集那些不是GC 阅读全文
posted @ 2020-03-26 18:04 那些年的代码 阅读(260) 评论(0) 推荐(0)
摘要:Java堆空间结构图:http://www.cnblogs.com/SaraMoring/p/5713732.htmlJVM内存状况查看方法和分析工具:http://blog.csdn.net/neosmith/article/details/47753733 ... 阅读全文
posted @ 2019-06-11 12:19 那些年的代码 阅读(517) 评论(0) 推荐(0)