java虚拟机
文章平均质量分 62
完猛
我们用代码创造世界,不能用代码支配世界
展开
-
jvm中java类加载机制,双亲委派
java指令到底干了些什么?我们些的java代码是如何被加载到jvm内存中执行的?实现自定义的类加载器。实现自己的热加载。实现同类多个版本共存。类加载具有五个阶段:加载、验证、准备、解析、初始化加载:将java中的class字节文件加载进入堆内存中。验证:验证该类是否正确,class文件不能对虚拟机造成危害,验证文件格式,元数据,字节码,符号引用验证。准备:java类中又许多其他变量,变量分为两种,一种是类变量,一种是实例变量,类变量就是具有static定义的变量。这时候需要根据定义类型原创 2021-03-26 14:47:37 · 198 阅读 · 0 评论 -
synchronized锁的作用,原理(笔记)
反编译命令: javap -p -v ***.classsynchronized可以保证原子性保证可见性保证有序性可重入特性synchronized不可中断特性当线程拿到锁之后 还没有释放该锁过程中,是不可以被主线程打断的,因为钥匙还没有还回去当现在还在等待钥匙的时候,也是无法被主线程打断的。同步代码块:指令monitorenter当指令执行到这里的时候,程序会尝试去获取monitor,有可能获取到,有可能获取不到阻塞在这里。monitor是一把锁,C++对象monito..原创 2021-03-09 10:34:51 · 542 阅读 · 0 评论 -
JVM笔记(JVM内存调优常用命令)
-Xmx指定java程序的最大堆内存, 使用java -Xmx5000M -version判断当前系统能分配的最大堆内存-Xms指定最小堆内存, 通常设置成跟最大堆内存一样,减少GC-Xmn设置年轻代大小。整个堆大小=年轻代大小 + 年老代大小。所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。-Xss指定线程的最大栈空间, 此参数决定了java函数调用的深度, 值越大调用深度越深, 若值太小则容易出栈溢出错误(StackOverf原创 2021-01-15 16:35:19 · 192 阅读 · 0 评论 -
JVM笔记(垃圾回收器)
垃圾回收器算法:常见的垃圾回收器stop-the-world (暂停整个程序,简称STW)1、Serial (单线程工作的年轻代) 作用于年轻代 串行回收在程序运行过程中,内存满了以后,触发GC, 先STW以后然后单线程一个个标记清除,程序继续运行2、ps (多线程工作的年轻代) 作用于年轻代 并行回收 不可以配合CMS在程序运行过程中,内存满了以后,触发GC, 先STW以后然后多线程一个个标记清除,程序继续运行3、ParNew (多线程工作的新...原创 2021-01-13 17:45:43 · 125 阅读 · 0 评论 -
JVM笔记(类加载图和jvm垃圾处理机制一)
jvm虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统,是物理机的软件实现。类的加载过程编译加载图如下:jvm和java无关。 jvm只执行class文件。jvm是一种规范。什么是垃圾c语言申请内存:malloc freec++:new deletejava: new申请 自动回收自动内存回收,编程上简单,系统不容易出错,手动释放内存,容易出现下面错误:1、忘记回收2、多次回收没有任何引用指向的一个对象或者多个...原创 2021-01-12 17:57:29 · 94 阅读 · 0 评论