随笔分类 - JVM
摘要:一、定义 很多人分不清【java 内存结构】与【java 内存模型】,【java 内存结构】指的是jvm的内存分区,例如:堆、程序计数器、虚拟机栈等这些,【java 内存模型】是 Java Memory Model(JMM)的意思。简单的说,JMM 定义了一套在多线程读写共享数据时(成员变量、数组)
阅读全文
摘要:一、类的生命周期 类被加载到jvm虚拟机内存开始,到卸载出内存为止,他的生命周期可以分为:加载->验证->准备->解析->初始化->使用->卸载。 其中验证、准备、解析统一称为链接阶段 1、加载 将类的字节码载入方法区中,内部采用 C++ 的 instanceKlass 描述 java 类,它的重要
阅读全文
摘要:一、垃圾回收判断 引用计数法:每次引用+1,解引用-1,引用为0可被回收,解决不了循环引用问题,会造成内存泄漏 可达性分析算法:被根对象直接或间接引用的对象都不能回收 Q:那些对象可以作为GC Root? Memory Analyzer工具可以作为堆内存分析工具,可以找到作为GC Root的对象 抓
阅读全文
摘要:1.查看CPU占用率高的进程 top命令查看进程信息 ps -eo pid,pcpu | sort -n -k pid 2.确定高cpu消耗的线程 top -H ps H -eo pid,tid,pcpu | sort -n -k 3 3.查看进程的线程 pstree -p pid 查看线程的相信信
阅读全文
摘要:常用参数 -XX:+PrintGCDetails:打印gc日志详细信息 -XX:+PrintGCTimeStamps:打印gc发生时相对jvm启动的时间戳,(后来加入了PrintGCDateStamps,打印gc发生的日期) -Xloggc:设置gc日志的生成位置 -Xms4096M:堆容量初始值
阅读全文
摘要:JVM内存结构 一、程序计数器 线程私有(指令最终由cpu执行,所以必须线程私有),记录了下一条指令的地址,不会出现内存溢出 二、虚拟机栈 线程运行时需要的一个内存空间,Java虚拟机栈和线程是同时创建的,用于存储栈帧。每个方法在执行时都会创建一个栈帧(Stack Frame),用于存储局部变量表、
阅读全文

浙公网安备 33010602011771号