
JVM
Hermione Granger
To be or not to be,that's a question.
展开
-
深入分析ClassLoader工作机制
深入分析ClassLoader工作机制结合资料,自己的一些理解,分析JVM的类加载器工作机制。1.java类的加载机制1.1 .什么是类的加载类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装...原创 2019-04-11 15:57:27 · 17516 阅读 · 0 评论 -
String中intern()方法
本文参考 https://blog.youkuaiyun.com/believesoul/article/details/79588305 ,我对这篇文章进行了一些小小的整理和修改。这篇文章很好的对intern()方法进行了阐述。最近在看字符串相关知识的时候,又看到了关于字符串创建方式和是否相等的相关问题,回忆起之前碰到的一个String中的intern()方法,它是一个本地方法(由Java语言外的语言编写...原创 2019-06-17 19:48:50 · 11333 阅读 · 0 评论 -
关于Java内存可见性的探究实验遇到的意外和happens-before
java内存模型(JMM)学习过后,一直没有找机会进行实践,于是抽时间写了一个程序验证JVM内存模型中常见的线程不可见问题程序如下:package com.bestqiang.thread.JUC;/** * @author BestQiang */public class TestStatic { public static void main(String[] args...原创 2019-05-15 14:43:25 · 17264 阅读 · 0 评论 -
GC Roots的对象,以及对java类中的成员变量,局部变量,静态变量和常量的不同回收时机的解析
1.作为GC Roots的对象有以下几种虚拟机栈(栈帧中的局部变量区,也叫局部变量表)中引用的对象。方法区中的类静态属性引用的对象。方法区中常量引用的对象。本地方法栈中JNI(Native)方法引用的对象。2.成员变量(实例变量)&局部变量&静态变量(类变量)的区别成员变量(实例变量)&局部变量区别:作用域成员变量:针对整个类有效。局部变量:只在...原创 2019-05-06 10:16:36 · 19725 阅读 · 0 评论 -
通过反编译深入理解Java String及intern + JDK1.8关于运行时常量池, 字符串常量池的要点
原作者:liuxiaopeng一、字符串问题 字符串在我们平时的编码工作中其实用的非常多,并且用起来也比较简单,所以很少有人对其做特别深入的研究。倒是面试或者笔试的时候,往往会涉及比较深入和难度大一点的问题。我在招聘的时候也偶尔会问应聘者相关的问题,倒不是说一定要回答的特别正确和深入,通常问这些问题的目的有两个,第一是考察对 JAVA 基础知识的了解程度,第二是考察应聘者对技术的态度。 ...转载 2019-05-04 21:25:57 · 17584 阅读 · 2 评论 -
"init"与"clinit"的区别
在编译生成class文件时,会自动产生两个方法,一个是类的初始化方法<clinit>, 另一个是实例的初始化方法<init>注意:<clinit>:如果没有静态块,静态变量则没有<clinit><init>:类的实例构造器。关于二者的详细对照:<clinit>:在JVM第一次加载class文件时调用,包括静态变量初始...原创 2019-05-03 17:19:23 · 17802 阅读 · 0 评论 -
从class文件与JVM加载机制理解final、static、static final
编程过程中经常用的static,final关键字,也经常听到同事谈起这些词,到底他们怎么样呢,JVM中class类文件结构可以找到答案。ConstantValue属性ConstantValue属性的作用是通知虚拟机自动为静态变量赋值,只有被static修饰的变量才可以使用这项属性。非static类型的变量的赋值是在实例构造器方法中进行的;tatic类型变量赋值分两种,在类构造其中赋值,或使用C...原创 2019-05-05 22:03:43 · 18801 阅读 · 0 评论 -
JVM之Class文件分析详解
JVM之Class文件分析详解逐个字节分析Class文件。了解Class文件内部结构。原始类文件:这个类直接拿了知乎的一个类,分析是很简单,只是因为重新画图比较麻烦,不想再做重复的苦力工作(地址(https://zhuanlan.zhihu.com/p/23068093)ps:作者仅仅提供了类和图,并无解析。)package com.vonzhou.learn.jvm.klass;p...原创 2019-05-03 13:43:30 · 17537 阅读 · 0 评论 -
jinfo报错:Error attaching to process
使用jinfo命令查看 RemoteMavenServer(Idea的一个进程) 时报错:Error attaching to process: sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are 25.101-b13. Target VM is 25.152-b28sun.jvm.hotspot...原创 2019-04-27 20:06:15 · 19345 阅读 · 0 评论 -
String str =“a“ + “b“ 与 String str = new String(“a“) + new String(“b“) 的区别(jdk1.8环境利用javap命令探究)
今天,又在思考一个常见的问题,那就是字符串创建对象系列。发现了一个很多人都模糊不清的问题,那就是String str =“a” + “b” 与 Strin str = new String(“c”) + new String(“d”) 把对象创建在了哪里?创建了几个字符串对象?话不多出,show my code:String str =“a” + “b”package com.bestqi...原创 2019-06-18 14:27:41 · 14012 阅读 · 6 评论