看再多别人的博客都不如自己翻一下源码: String 内部使用final 修饰的byte[] 数组保存字符串,所以说String是不可变的。 为什么说String相加每次都会返回新的String对象?看下源码就知道了 字符串相加的时候先调用concat方法,最终是调用System.arraycopy ...
分类:
编程语言 时间:
2019-03-09 10:28:56
阅读次数:
200
深入理解JVM 原文链接:https://www.cnblogs.com/dingyingsi/p/3760447.html 整理:CCSoft 虚拟机内存模型中定义的访问操作如下图所示: 图1. JVM虚拟机定义的访问操作 java中通过多线程机制使得多个任务同时执行处理,所有的线程共享JVM内存 ...
分类:
其他好文 时间:
2019-03-04 17:27:38
阅读次数:
190
https://mp.weixin.qq.com/s?__biz=MzIwMzY1OTU1NQ==&mid=2247485439&idx=1&sn=c5081faa273439ebfb3880452ec3fdf7&chksm=96cd47b3a1bacea59a8dbc8faebc3438eba1a ...
分类:
编程语言 时间:
2019-02-23 23:07:08
阅读次数:
341
类加载器:根据指定全限定名称将class文件加载到JVM内存,转为Class对象。 站在JVM的角度来看,只存在两种类加载器: 1、启动类加载器(Bootstrap ClassLoader):由C++语言实现(针对HotSpot),负责将存放在<JAVA_HOME>\lib目录或-Xbootclas ...
分类:
其他好文 时间:
2019-02-15 15:14:48
阅读次数:
204
无关性 无关性的体现有两个方面: 1、平台无关性:可在不同的操作系统和机器指令集上执行,可在不同厂商的虚拟机平台上执行。 2、语言无关性:用不同编程语言写出的代码编译生成的文件都可以运行。 实现思想: 面向接口,定义虚拟机和编译器之间的接口规范。也就是编译后文件的存储格式——字节码(ByteCode ...
分类:
编程语言 时间:
2019-02-02 19:21:55
阅读次数:
194
作为使用范围最广的虚拟机之一HotSpot,必须对垃圾回收算法的执行效率有严格的考量,只有这样才能保证虚拟机高效运行 ...
分类:
编程语言 时间:
2019-02-01 20:39:25
阅读次数:
139
2、HotSpot虚拟机对象探秘 对象的创建过程 1、加载类 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、 解析和初始化过。 如果没有,那必须先执行相应的类加载过程。 2、分配内存 在类加载检查通过后,接下来 ...
分类:
编程语言 时间:
2019-02-01 10:13:12
阅读次数:
221
[inside hotspot] java方法调用的StubCode 众所周知jvm有 ,`invokedynamic invokestatic invokespecial invokevirtual`几条方法调用指令,每个负责调用不同的方法, 而这些方法调用落实到hotspot上都位于 的 Jav ...
分类:
编程语言 时间:
2019-01-27 21:57:05
阅读次数:
161
首次启动Kafka报错如下: 原因:内存不足,查看启动配置 调小一些: ...
分类:
编程语言 时间:
2019-01-27 10:53:29
阅读次数:
1295
全文共 1890 个字,读完大约需要 6 分钟。 上一篇我们讲了垃圾标记的一些实现细节和经典算法,而本文将系统的讲解一下垃圾回收的经典算法,和Hotspot虚拟机执行垃圾回收的一些实现细节,比如安全点和安全区域等。 因为各个平台的虚拟机操作内存的方法各不相同,且牵扯大量的程序实现细节,所以本文不会过 ...
分类:
编程语言 时间:
2019-01-25 11:33:28
阅读次数:
203