![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
墨迹世界
不负韶华
展开
-
主动引用和被动引用
Java初始化,有且只有5种场景,会导致初始化 1)遇到new,getstatic,putstatic,invokestatic 这四条字节码指令时。 2)使用java.lang.reflect包的方法对类进行反射调用时。 3)初始化子类,其父类还未初始化 4)虚拟机启动,指定主类 5)java.lang.invoke.MethodHandler 实例最后解析结果REF_getStat...原创 2020-01-05 12:06:59 · 345 阅读 · 0 评论 -
Jdk常用命令
jps:JVM Process Status Tool,显示指定系统内所有的虚拟机进程。 对我来说,每天都会用到的命令。可查看进程ID,使用Kill Pid ,快速关闭项目。 1.jps -l :输出主类的全名 2.jps -v:输出虚拟机启动时的就VM参数 jstat:虚拟机统计信息监视工具,用于监视虚拟机各种运行状态信息的命令行工具 1.jstat -gcutil pid...原创 2019-12-30 16:40:47 · 483 阅读 · 0 评论 -
JVM--垃圾收集器,与内存配分策略
又看了《深入理解Java虚拟机》中关于收集器这一章。简单做个总结,写下自己的想法。 哪些内存需要回收? 程序计数器,虚拟机栈,本地方法栈,这3个区域随线程而生,随线程而灭。这也是为什么,逃逸分析技术,能帮助虚拟机减少GC次数(确定域中的类,可以在栈上创建实例),优化代码,提高性能。 需要回收的内存,主要是堆,方法区(线程共享的区域)。堆分为新生代(1/3),老年代(2/3),新生代下又分为E...原创 2019-12-27 18:32:57 · 230 阅读 · 0 评论 -
JVM--JIT编译与逃逸技术
《深入理解Java虚拟机》一书中有这样的表述。 对于大多数应用来说,Java堆,是Java虚拟机所管理的内存中最大的一块儿。Java堆是被所有线程共享的一块儿内存区域,在虚拟机启动时创建。此内存区域的唯一目的:就是存放对象实例,及数组都要堆上分配,但是随着JIT编译器的发展与逃逸分析技术逐渐成熟,栈上分配,标量替换优化技术将会导致一些微妙的变化发生,所有对象都分配在堆上也渐渐变得不那么绝对...原创 2019-12-25 18:03:46 · 257 阅读 · 1 评论 -
java是编译性语言,解释性语言
看到一个对java的描述,恰好之前笔试也遇到的一个问题:java是解释性语言还 是编译性语言。书中对java的描述是这样的: java兼具编译性与解释性,java编译器会将java源码翻译成所谓的字节码(面向 虚拟CPU的指令集)当java可执行文件(字节码)在机器上运行时。解释器会将每一个 字节码转换为实际的cpu指令,这些指令接下来会运行在实际的cpu过程中。正因如此 ja...原创 2018-06-27 23:05:47 · 2872 阅读 · 1 评论