摘要:GC调优 参考:美团JVM调优文章 参数例子 java -jar -Xmx1024m -Xms1024m -Xmn256m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/jvmlogs/ -XX:+UseParNewGC -XX:+Use
阅读全文
摘要:栈 什么是栈 栈又叫堆栈,是先入后出的数据结构 栈是线程私有的,不能互相访问的,栈随着线程的创建而创建,并且在编译时就已确定了栈的大小 栈通过栈帧保存了局部变量、对象的内存引用地址、操作栈、动态链接等等 栈帧 栈帧就是栈中的最小单位,第一个方法的调用就会生成栈帧,并将其压如栈中,就是压栈。 第一个方
阅读全文
摘要:7.1JVM类加载机制 虚拟机把数据从Class文件加载到内存,并且校验、转换解析和初始化最终形成可以被虚拟机使用的Java类型,这就是虚拟机的类加载机制。 7.2类加载的时机 1.类加载的步骤开始的顺序: 加载(Loading) -> 验证(Verification) -> 准备(Preparat
阅读全文
摘要:6.1 关于类文件 1.class文件的一次编译,到处运行的跨平台性; 2.JVM不止有跨平台性,还有跨语言性,不管是JRuby还是Groovy写出来的程序,只要编译出符合JVM规范的class文件就可以在JVM上运行; 6.2 类文件结构 PS:任何一个Class文件都对应一个类或者接口,但是一个
阅读全文
摘要:5.2一些案例: 1.高性能硬件部署策略: (1)背景:某公司升级了硬件(CPU升级为4核,内存增加为16G),发现不定期出现网页失去响应。 (2)原因:①内存增加之后,项目中有在内存中处理文件的大对象,从而进入的老年代而没有进行及时回收,然后每次Full GC都要回收比较大量的对象;②Full G
阅读全文
摘要:4.2 JVM命令行工具 1.jps(JVM Process Status Tool):JVM进程查看工具,命令行进入到jdk的bin目录下,使用命令:jps -l/-q/-v/-m 2.jstat(JVM Statistics Monitoring Tool):JVM运行状态监视工具,输入的内容全
阅读全文
摘要:3.1 关于垃圾收集和内存分配 垃圾收集和内存分配主要针对的区域是Java虚拟机中的堆和方法区; 3.2 如何判断对象是否“存活”(存活判定算法) 垃圾收集器在回收对象前判断其是否“存活”的两个算法: 1.引用计数算法:一个对象在被引用之后这个计数器就加1,不被引用之后则减1,如果是0,那么就被回收
阅读全文
摘要:2.1 C、C++内存管理是由开发人员管理,而Java则交给了JVM进行自动管理 2.2 JVM运行时数据区:方法区、堆(运行时线程共享),虚拟机栈、本地方法栈、程序计数器(运行时线程隔离,私有) 1.程序计数器(Program Counter Register):每一个线程都独有一个程序计数器,并
阅读全文
摘要:此文总结的很不错:https://www.cnblogs.com/ACFLOOD/p/5528035.html 准备openJDK源码和环境 准备openJDK源码和环境 1.在linux和macOS上编译openJDK更加友好,我是在linux上编译的; 2.编译jdk有利于理解jvm的运行过程,
阅读全文