JVM
文章平均质量分 83
涛堆堆
一个学java的开发小白
展开
-
JVM-HotSpot对象揭秘
并不是必然存在的,它仅仅起占位符的作用,由于HotSpot虚拟机的自动内存管理系统起始地址必须是8字节的整数倍,任何对象的大小都必须是8字节的整数倍,对象头已经被设计为8字节的整数倍,而对象填充是在实例数据部分没有对齐时来填充的。部分是对象真正存储的有效信息,在程序代码中定义的各种类型的字段内容,无论是父类继承的还是子类定义的;对象在堆内存中的存储布局可以分为:对象头(Header)、实例数据(Instance Data)和对象填充(Padding)是否已经被加载、解析、初始化过。原创 2023-08-16 18:07:50 · 42 阅读 · 0 评论 -
JVM-深入剖析JVM内存区域
本机直接内存的分配不会受到堆大小的限制,但是,会受到本机总内存(包括物理内存、SWAP分区或者分页文件)大小以及处理器寻址空间的限制,一般服务器管理员配置虚拟机参数时,会根据实际内存去设置-Xmx等参数信息,但经常忽略掉直接内存,使各个内存区域总和大于物理内存限制(包括物理的和操作系统级的限制),从而导致动态扩展时出现OOM异常。,java并不要求常量一定只有编译期才能产生,并不是预置入Class文件中常量池的内容才可以进入方法区运行时常量池,运行期间也可以将新的常量放入池中,用的比较多的就是。原创 2023-08-16 18:05:42 · 45 阅读 · 1 评论 -
JVM-调优
由此可见,Web应用需要一个对应用造成暂停时间短的GC,再加上大部分Web应用的瓶颈都不在CPU上,因为对于Web应用而言,在G1不够成熟的情况下,CMS GC是不错的选择。-Xmn适用于调整新生代的大小,新生代的大小决定了多少比例的对象有机会在minor GC阶段被回收掉,但此值相应的也决定了老年代的大小;新生代越大,通常意味着多数对象会在minor GC阶段被回收掉,但同时也决定了老年代的空间会变小,可能会造成更频繁的Full GC,甚至是OOM。由于GC动作会挂起应用线程,严重影响性能。原创 2023-08-16 18:04:03 · 32 阅读 · 1 评论 -
JVM-执行引擎详解
只要能被invokestatic和invokespecial指令调用的方法,都可以在解析阶段中确定唯一的调用版本,java中符合这个条件的方法有静态方法、私有方法、实例构造器、父类方法四种,再加上被final修饰的方法(尽管它被invokevirtual调用),这5种方法调用会。所有方法调用的目标方法在Class文件中都是一个常量池中的符号引用,在类加载的解析阶段,会将其中的一部分符号引用转化为直接引用,这种解析能成立的前提是:方法在程序。,用于存放方法参数和方法内部定义的局部变量。原创 2023-08-16 18:01:51 · 45 阅读 · 1 评论 -
JVM-什么是双亲委派模型?
这个类不在JAVA_HOME/lib/中,而是位于jar包的META-INF/services/目录里,所以说这块的类加载实际上Bootstrap Class Loader是无法进行加载的,他需要Application Class Loader来完成加载,但原则上这是不被允许的,因为破坏了双亲委派机制。,每一次都是如此,因此所有的请求最后都会传到最顶层,然后再去加载,如果顶层反馈无法完成这个加载请求(它的搜索范围中没有找到所需的类),就会给下一层的子类去找,一层一层下去尝试完成加载;原创 2023-08-16 17:59:21 · 55 阅读 · 1 评论 -
JVM-内存分配和回收策略详解
对象通常在Eden区产生,如果经过了一次minorGC后仍然存活,该对象会被移动到Survivor空间且将年龄设为1岁;对象在Survivor区每熬过一次minorGC,年龄就加1岁,当年龄加到一定程度(默认为15),就会晋升到老年代中;大部分情况,对象优先在Eden区分配,当Eden区内存不够分配时,虚拟机将发起一次Minor GC;设置值是否允许担保失败,如果允许,会继续检查老年代最大可用的连续空间。,如果大于,会尝试进行一次MinorGC,虽然有风险,但是风险很小;如果不大于,虚拟机会检查参数。原创 2023-08-16 17:56:36 · 35 阅读 · 1 评论 -
JVM-由浅入深分析经典垃圾收集器
G1收集器之所以能够建立可预测的停顿时间模型,是应为它将Region作为单次回收的最小单元,即每次回收的内存空间都是Region大小的整数倍,这样可以有计划的避免整个java堆进行全区域的GC;:G1的停顿预测模型是以**衰减均值(Decaying Average)**来实现的,GC过程中,G1会记录每个Region的回收耗时、每个Region记忆集中的脏卡数量等各个可测量的步骤话费的成本,并分析得出平均值、标准偏差、置信度等统计信息。但是随着处理器核心的增加,其对GC时系统资源的高效利用还是很有好处的;原创 2023-08-16 17:37:12 · 171 阅读 · 0 评论 -
JVM-深入解析垃圾回收算法
HotSpot虚拟机Eden区和Survivor区的大小比例是8:1,也就是说新生代可以用的内存空间是整个新生代空间的90%,但是并不能百分百保证10%的空间够放存活的对象(其实绝大部分情况是够了),但是Appel式回收还对这里做了一个处理,当MinorGC后Survivor区放不下存活的对象时,就需要依赖其他的内存(一般这里就是老年代,因为MinorGC存活下来的对象很可能会进入老年代)进行。如果剩下的都是难以消亡的对象,虚拟机就可以用较低的频率去回收这个区域,这样就同时兼顾了时间开销和内存有效利用。原创 2023-08-16 17:29:06 · 281 阅读 · 1 评论