一、基础篇 JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 内存可见性、重排序、顺序一致性、volatile、锁、final 垃圾回收 内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定 JVM参数及调优 Java对象模型 oop-klass、对象头 ...
分类:
编程语言 时间:
2019-11-22 00:34:49
阅读次数:
72
性能优化基本是BAT等一线互联网公司程序员必备的技能,以下为大家完整揭晓性能完整的优化方案和方法:包含web网站调优、数据库、JVM调优、架构调优等方案。
第一:Web网站调优
1、尽可能减少HTTP请求:图片合并 (css sprites),Js脚本文件合并、css文件合并。
2、减少DNS查询
3、将css放在页面最上面,将js放在页面最下面
4、压缩js和css
减少文件体积,去除不必要的空白符、格式符、注释(即对代码进行格式化)
5、把js和css提取出来放在外部文件中
这一条要灵活运用,把js和css提取出来放在外部文件的优点是:减少html体积,提高了js和css的复用性,提高日后的可维护性
缺点:增加了http请求,不过这一点可以通过缓存来解决。
什么情况下将js和css写在页面内呢,可以分为几种情况:js和css代码比较少;这个页面不怎么会访问
6、避免重定向
重定向就是用户请求的页面被转移到了别的地方,浏览器向服务请请求一个页面,服务器告诉浏览器请求的页面已经被转移到另外一个页面,并告知另一个页面地址,浏览器就再发送请求到重定向的地址。这样会增
分类:
数据库 时间:
2019-11-21 09:42:17
阅读次数:
103
线程安全问题? 当多个线程共享同一个全局变量,做写的操作时,可能会受到其他线程的干扰。读不会发生线程安全问题。 -- Java内存模型。 非静态同步方法使用什么锁? this锁 静态同步方法使用什么锁? 当前类的字节码文件 什么是ThreadLocal? ThreadLocal是给每个线程提供局部变 ...
分类:
编程语言 时间:
2019-11-19 11:47:47
阅读次数:
85
前言本文将由浅入深详细介绍Java内存分配的原理,以帮助新手更轻松的学习Java。这类文章网上有很多,但大多比较零碎。本文从认知过程角度出发,将带给读者一个系统的介绍。进入正题前首先要知道的是Java程序运行在JVM(JavaVirtualMachine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学习Ja
分类:
编程语言 时间:
2019-11-19 00:47:47
阅读次数:
67
先给出结论,Java中只有值传递 ! 简单案例01 打印如下 显而易见并没有修改变量num的值, main函数 和changeNum函数运行在两块相互隔离的内存区域内, 只在main函数中调用changeNum()函数时,将num的值(拷贝一份)作为参数传递过去, 并在changeNum()函数中进 ...
分类:
编程语言 时间:
2019-11-17 17:47:09
阅读次数:
115
知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累。不占太多时间,不停的来唤醒你记忆深处的知识点。 Java内存模型(JMM) JVM内存模式是JVM的内存分区 Java内存模式是一种虚拟机规范 1. Jvm内存按照运行时态及内存规范划分 2. Java内存区域 2.1 线程安全 2. ...
分类:
编程语言 时间:
2019-11-17 13:08:22
阅读次数:
103
多线程中关键字volatile,走进她的内心世界,看看她的内存语义之美! ...
分类:
编程语言 时间:
2019-11-17 12:36:24
阅读次数:
70
在并发编程中分析线程安全的问题时往往需要切入点,那就是两大核心:JMM抽象内存模型以及happens-before规则Java内存模型以及happens-before规则,三条性质:原子性,有序性和可见性。关于synchronized和volatile已经讨论过了,就想着将并发编程中这两大神器在 原... ...
分类:
编程语言 时间:
2019-11-16 17:48:13
阅读次数:
80
jvm:分为 栈,堆,方法区metho area【属于堆】 栈: 1.压栈:先进后出,后进先出,栈描述的是方法执行的内存模型,每个方法被调用都会创建一个栈帧(存储局部变量,操作数,方法出口) 2.JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(参数,局部变量) 3.栈属于线程私有不能实现线 ...
分类:
编程语言 时间:
2019-11-14 22:17:32
阅读次数:
77