jvm学习笔记
文章平均质量分 86
一个坚果
这个作者很懒,什么都没留下…
展开
-
jvm学习笔记(一)
jvm对每一个java程序员来说都非常重要,了解并掌握jvm可以帮助我们对java语言更好的掌控。 第一篇先记录一下关于jvm的基础知识 1、java内存区域 java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,如下图。 方法区:存放着已加载的类的信息、常量、静态变量、JIT编译器编译后的代码,方法区一般也成为永久带(pern Gen),该区域为线原创 2015-01-11 21:52:45 · 549 阅读 · 0 评论 -
jvm学习笔记(二)
接上篇 JVM的垃圾收集算法 1.标记-清除算法 这是最基础的收集算法,(Mark-Sweep),就如同名字所表达的一样,扫描整个内存区域,对可回收的对象进行标记,当扫描完时,再清除所有被标记的对象。 此算法的缺点有以下两点 效率不高。 会产生内存碎片,所谓内存碎片就是不连续的内存区域,这样可能会导致虽然有足够的内存但是却没有足够大的连续内存去分配给一个比较大的对象,从原创 2015-01-13 22:39:56 · 519 阅读 · 0 评论 -
jvm学习笔记(三)
工欲善其事必先利其器,想要更好的了解虚拟机,借助一些好用的工具会让你事半功倍 JDK命令行工具 jdk命令行工具在jdk安装目录下的bin文件夹中 1.jps:虚拟机进程状态工具 类似linux系统中的ps命令,可以列出正在运行的虚拟机进程,并显示虚拟机执行主类的名称,以及这些进程的本地虚拟机的唯一ID,如下图 进程号为6920的是我开启的tomcat服务器,主类原创 2015-03-08 14:58:53 · 570 阅读 · 0 评论 -
java类static初始化代码块中抛出未预期的异常,导致该类无法被正常加载
最近在项目中发现一个比较有意思的异常情况,特此记录一下。 某个类在static初始化代码块中启动了一个线程,用于监控该类的运行情况并打印日志,代码示意如下。 public class Test { static { new Thread(new Runnable(){}).start(); } ...// other code }在项目运行过程中,...原创 2018-03-31 15:36:38 · 6725 阅读 · 1 评论