我们前面几讲介绍了性能优化的原则和策略,并且集中探讨了CPU、内存和存储三个最关键的领域。 今天我们来讲一个比较复杂的JVM场景和超大延迟的性能问题;这是本模块,也就是性能优化模块的最后一讲。 我们会一步步地探讨这个性能问题的表象、问题的重现、性能分析的过程和解决方案。这个性能问题的复杂性,表现在它 ...
分类:
其他好文 时间:
2020-08-20 18:49:57
阅读次数:
59
求阶乘第一版 由于数组长度采用递归,数据太大内存不够。 package com.example.common.factorial; /** * 求阶乘. * 基于jvm运行内存有限。大概12000以上的数字由于递归占用会有溢出错误。 * 且本方法不考虑非法情况,默认用户正确输入正整数。 * main ...
分类:
其他好文 时间:
2020-08-20 18:46:05
阅读次数:
44
上一篇:Java面试备战篇——基础篇(三)1、知识点汇总JVM是Java运行基础,面试时一定会遇到JVM的有关问题,内容相对集中,但对只是深度要求较高。其中内存模型,类加载机制,GC是重点方面.性能调优部分更偏向应用,重点突出实践能力.编译器优化和执行模式部分偏向于理论基础,重点掌握知识点.需了解内存模型各部分作用,保存哪些数据.类加载双亲委派加载机制,常用加载器分别加载哪种类型的类.GC分代回收
分类:
编程语言 时间:
2020-08-20 18:43:30
阅读次数:
62
上一篇:Java面试备战篇——JVM篇(一)11、Java对象创建过程1.JVM遇到一条新建对象的指令时首先去检查这个指令的参数是否能在常量池中定义到一个类的符号引用。然后加载这个类(类加载过程在后边讲)2.为对象分配内存。一种办法“指针碰撞”、一种办法“空闲列表”,最终常用的办法“本地线程缓冲分配(TLAB)”3.将除对象头外的对象内存空间初始化为04.对对象头进行必要设置12、类的生命周期类的
分类:
编程语言 时间:
2020-08-20 18:42:45
阅读次数:
70
4.单例模式(面试)1.介绍单例对象(Singleton)是一种常用的设计模式。在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这样的模式有几个好处:1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。2.示例1.懒汉式,线程不安全这种方式是最基本的实现方式,这种实现最大的问题就是不支持多线程。
分类:
其他好文 时间:
2020-08-20 18:29:20
阅读次数:
55
JVM 1、JVM 的位置 运行在操作系统之上的 java程序是排在 jre(jvm) 上的 所谓的JVM 调优就是在堆里面调,方法区就是 一个特殊的堆 2、JVM 的体系结构 3、类的加载器 作用 加载 class 文件 类加载器分为好几个,有等级 1、虚拟机自带的加载器 2、启动类(根)加载器 ...
分类:
其他好文 时间:
2020-08-20 18:22:08
阅读次数:
61
武培轩推荐搜索Java数据结构SpringBootMySQLRedisNginxif快还是switch快?HashMap的初始化size要不要指定,指定之后性能可以提高多少?各种序列化方法哪个耗时更短?无论出自何种原因需要进行性能评估,量化指标总是必要的。在大部分场合,简单地回答谁快谁慢是远远不够的,如何将程序性能量化呢?这就需要我们的主角JMH登场了!JMH简介JMH(JavaMicrobenc
分类:
其他好文 时间:
2020-08-19 19:30:22
阅读次数:
57
昨天和一个同事吃了一个饭,他要离职去深圳了,当时一起来到这个公司,还是我介绍他来这里的,辗转一年多了,我们才聚了一次,各自都在忙碌各自的生活。他是一个高材生,算法比我溜多了,昨天吃饭,深受打击,如果以后有机会去大公司面试,一定必考的就是算法题,还记得去年自己面试的时候,大公司的算法题是真的不会啊。想想就让自己觉得特别丧。我好菜啊。其实回头自己静下来想一想,自己其实也是有自己的优势的,那就是自己对运
分类:
编程语言 时间:
2020-08-18 13:39:48
阅读次数:
68
单例的7种设计思路 1:饿汉式:final类不允许被继承,static实例能利用jvm的<clinit>确保同步,缺点就是无法保证被ClassLoader加载的singleton04在什么时候使用, 这就意味着singleton04实例所开辟的堆内存空间会驻留更久的时间,这种情况对轻资源的类来说影响 ...
分类:
其他好文 时间:
2020-08-17 16:42:17
阅读次数:
61
之前在介绍JVM内存模型的时候(参看:了解JVM内存模型),提到了在运行时数据区之前,有个ClassLoader,这个就是类加载器。用以把Class文件中的描述信息加载到内存中运行和使用。以下是《深入理解Java虚拟机第二版》对类加载器机制的定义原文:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载
分类:
其他好文 时间:
2020-08-15 22:21:10
阅读次数:
62