
JVM
文章平均质量分 95
嗯mua.
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【JVM】垃圾回收机制
ParNew + CMS (关注暂停时间)PS + PO(关注吞吐量)G1(JDK8之前不建议,较大堆并且关注暂停时间)G1(默认)原创 2023-10-30 22:06:25 · 1448 阅读 · 3 评论 -
【JVM】类加载器
类加载器(ClassLoader)是Java虚拟机提供给应用程序去实现获取类和接口字节码数据的技术。一个Tomcat程序中可以运行多个Web应用,如果这两个应用中出现了相同限定名的类,比如Servlet类,Tomcat要保证这两个类都能加载并且它们应该是不同的类。如果不打破双亲委派机制,当应用类加载器加载Web应用1中的MyServlet之后,Web应用2中相同限定名的MyServlet类就无法被加载了。Tomcat使用了自定义类加载器来实现应用之间类的隔离。原创 2023-10-27 00:08:07 · 883 阅读 · 0 评论 -
【JVM】类的生命周期
加载(Loading)连接(Linking)验证准备解析初始化(Initialization)使用(Using)卸载(Unloading)加载:根据类的全限定名把字节码文件的内容加载并转换成合适的数据放入内存种种那个,存放在方法区和堆上。连接验证:魔数,版本号等验证,一般不需要程序员关注。准备:为静态变量分配内存并设置初始值。解析:将常量池中的符号引用(编号)替换为直接引用(内存地址)初始化:执行静态代码块和静态变量的赋值。使用卸载静态变量使用final。原创 2023-10-25 00:36:42 · 1049 阅读 · 0 评论 -
【JVM】垃圾回收
当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。无需手动编码,但其内部配合引用队列使用,在垃圾回收时,终结器引用入队(被引用对象暂时没有被回收),再由 Finalizer 线程通过终结器引用找到被引用对象并调用它的 finalize 方法,第二次 GC 时才能回收被引用对象。但是这两个对象没有其他对象引用它们,虽然它们俩都不会被使用了,但是它们的引用计数不能归零,所以不能被垃圾回收。A对象引用了B对象,B对象的引用计数为1;原创 2023-02-28 00:10:34 · 724 阅读 · 0 评论 -
【JVM】内存结构
程序计数器:Program Counter Register 程序计数器(寄存器)作用:记住下一条jvm指令的执行地址。是线程私有的(每个线程都有自己的程序计数器,切换线程的时候才知道接下来执行那条命令)。随着线程的创建而创建,随线程销毁而销毁。不会存在内存溢出。Java Virtual Machine Statcks (Java虚拟机栈)每个线程运行所需要的内存,称为虚拟机栈。每个栈由多个栈帧(Frame)组成,对应每次方法调用时占用的内存。原创 2023-02-22 21:52:13 · 675 阅读 · 0 评论