深入理解java虚拟机
薛定e的猫
这个作者很懒,什么都没留下…
展开
-
JVM:JVM的内存结构
前言 今天开始JVM的学习,从JIVM的内存结构开始JVM之旅。 内存结构图 程序计数器: 容量:较小的内存空间 作用:当前线程所执行的行号指示器 说明:JAVA方法,则程序计数器的记录就是当前虚拟机字节码指令的地址。本地方法,则为空。 共享还是私有:线程私有,线程间互不影响 JAVA虚拟机栈: 作用: 每个方法在执行时会创建一个栈帧,一个方法的执行就是这个栈帧在虚拟机栈入栈出栈的过程。 说明:...原创 2018-12-13 23:23:43 · 245 阅读 · 0 评论 -
服务器 cpu 占用 高怎么办?
1、查看具体是哪个进程的load比较高 // 查看进程 按CPU占用排序 ps -aux --sort -pcpu //最占CPU的10个 ps -aux --sort -pcpu | head -10 //top -c 实时 2、查看这个进程中每个线程的cpu占用率 ps -Lp 15047 cu top -Hp 进程ID 显示一个进程ID的线程运行信息列表 //可以通过这个来查...原创 2018-12-25 11:00:00 · 1125 阅读 · 0 评论 -
JVM:JVM调优案例记录
https://blog.csdn.net/ityouknow/article/details/79078249原创 2018-12-25 10:39:24 · 317 阅读 · 0 评论 -
JVM:JVM调优-工具学习
jconsole Jdk自带的,可用查看jvm运行时的各种状态动态数据,例:堆内存、线程数、类加载卸载数、CPU占用率等,还可以检测死锁。 可以通过jconsole查询本地jvm进程获取远程jvm进程,注意要查看远程的jvm进程需要在远程tomcat启动脚本中添加以下代码: -Dcom.sun.management.jmxremote.port=6969 -Dcom.sun.managem...原创 2018-12-25 10:30:51 · 231 阅读 · 0 评论 -
JVM:GC-判断对象是否可以回收?
引用计数算法 可达性分析算法 finalize JDK1.2,引用概念扩充 方法区内能否GC原创 2018-12-19 23:27:43 · 1418 阅读 · 0 评论 -
JVM:JVM调优-命令学习
jps jstat jmap jstack原创 2018-12-24 22:59:39 · 150 阅读 · 0 评论 -
JVM:HotSpot对象探秘-创建、内存分配、访问定位
如何创建对象? 如何实现对象的内存分配? 如何实现对象的访问定位?原创 2018-12-18 22:57:36 · 330 阅读 · 0 评论 -
JVM:GC-常用JVM参数
JVM参数太多了,先记录一些常用的加深印象。 常用参数 -Xms:初始堆内存 -Xmx:最大堆内存 -Xmn:新生代大小 -Xss:每个线程栈大小 -XX:MaxPermSize:永久代大小 -XX:NewRatio 默认为2 ,老年代为新生代的2倍 -XX:SurvivorRatio 默认为8 ,eden:survivor=8 -XX:PretenureSizeThreshold=3145728...原创 2018-12-23 13:29:55 · 408 阅读 · 0 评论 -
JVM:GC-minor gc / full gc触发条件
minor gc : 当eden区满没有足够内存给新对象分配内存,触发minor gc. full gc: 1、调用System.gc()时,系统建议JVM执行full gc,但不必然执行。 一般不建议程序中调用System.gc(),可以通过DisableExplicitGC来禁用System.gc(),即忽略System.gc()触发的full gc 操作 2、老年代或者方法区空间不足 3、在...原创 2018-12-23 11:36:27 · 481 阅读 · 0 评论 -
JVM:GC-内存分配与回收策略
对象优先在Eden区分配 大对象直接在年老代分配 长期存活对象进入老年代 动态对象年龄判断 空间分配担保原创 2018-12-22 17:59:15 · 180 阅读 · 0 评论 -
JVM:GC-垃圾收集器
Serial收集器 Serial Old收集器 ParNew收集器 Parallel Scavenge 收集器 Parallel Old 收集器 CMS收集器 G1收集器原创 2018-12-21 23:30:45 · 127 阅读 · 0 评论 -
JVM:如何实现一个自定义类加载器?
为什么要自定义加载器 如何实现自定义加载器 使用自定义加载器的场景原创 2018-12-15 23:08:28 · 2029 阅读 · 0 评论 -
JVM:JVM 类加载器ClassLoader的实现-代码角度
下面是ClassLoader中加载class的方法 protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException { synchronized (getClassLoadingLock(name)) { ---1 ...原创 2018-12-15 10:58:10 · 137 阅读 · 0 评论 -
JVM:类加载机制
前言 JAVA虚拟机中的类加载机制非常重要,在关于JVM的面试中经常问到,因此今天整理一下相关的知识点,一方面为之后的面试做准备,另一个方法也是扩展一下知识面。 类的生命周期 关于类的生命周期,直接上图看下。 类从加载进虚拟机内存,到从虚拟机卸载的整个生命过程包括 加载、验证、准备、解析、初始化、使用、卸载。 加载、验证、准备、初始化和卸载的顺序是固定的,但是解析不一定,它可以出现在初始化之后,...原创 2018-12-15 00:50:21 · 376 阅读 · 0 评论 -
JVM:GC-常用算法理解
标记-清除 复制算法 标记-整理 分代收集原创 2018-12-21 00:42:46 · 136 阅读 · 0 评论 -
服务器 CPU使用率低 但是load高
等待磁盘IO完成的进程太多,导致等待队列长度过大,体现load过高,但是cpu此时去执行别的任务或者空闲,所以会有CPU使用率低但是load高的情况。 主要有以下几种情况: 1、磁盘读写操作太频繁,导致大量IO等待 CPU的工作效率高于磁盘。 进程在CPU上运行要访问磁盘文件时,CPU会向内核去发起调用文件的指令,让内核去磁盘读取文件。 此时CPU去执行别的任务或者空闲。 这个进程就会变成不可中断...原创 2018-12-25 13:16:38 · 4053 阅读 · 0 评论