首页
学习
活动
专区
工具
TVP
发布

码字搬砖

专栏作者
209
文章
288936
阅读量
32
订阅数
JVM加载过程科普
我们知道一个 java 类想要被执行就必须被加载到内存中,而加载的过程呢有大体可以分为 加载、连接、初始化、使用、卸载,五部分,下面,我们就一起看一下各个部分 JVM 都做了什么。 首先,我们将这段代码编程成 class 文件,然后运行。
shengjk1
2020-09-29
7180
JVM类加载过程科普
我们知道一个 java 类想要被执行就必须被加载到内存中,而加载的过程呢有大体可以分为 加载、连接、初始化、使用、卸载,五部分,下面,我们就一起看一下各个部分 JVM 都做了什么。
shengjk1
2020-09-24
7430
一文搞懂 java -jar 发生了什么
之前一直就很好奇 java -jar 到底发生了什么,为什么执行 java -jar 代码就自动运行了。今天我们来说明一下,尽量覆盖操作系统、编译原理、JVM 的一些东西。( 本文将处于一个不断更新的状态,知道上面这些东西覆盖的差不多了为止,如果可以的话,也会加上硬件方面的东西 ),主要的目的就是为了能以最简单的 java 代码来串一些相对来说比较底层的东西,让自己以及让每个读者对计算机能有一个相对全局的了解。
shengjk1
2020-09-18
1.2K0
读 Differences between JDK, JRE and JVM
Java Development Kit Java applications and applets 的开发环境。它包括 JRE,java解释/加载工具( java),编译工具( javac ),归档工具( jar ),文档生成工具( javac ) 以及其他的 java 开发需要的工具
shengjk1
2020-06-18
9900
读 Guide to Java String Pool
1.相同的字面意义的字符创仅仅会在 String Pool 中存放一个 2.当我们创建 String 时, 比如 String a=“aa”; JVM 首先会在 String Pool 中搜索 “aa” ,如果搜索到了则将 reference 指向相应的内存地址,不会分配额外的内存。如果没有找到相同的 value,则将 ”aa“ 添加至 pool 中并返回 reference。(这个叫做 interning ) 3. 通过 String 构造器创建,比如 String newString =new String(“aa”),java compiler 会创建一个新的 object 并存入 heap 中。 4. 在 Java 7 开始,Java String Pool 存储在 Java Heap 中,可以被 GC 回收,一定程度上可以减少 OOM。Java 7 之前存储固定大小在 PermGen space 中。
shengjk1
2020-05-01
4680
JVM内存模型之运行时常量池
运行时常量池 jdk7之前属于方法区的一部分,jdk8之后属于Metaspace,在heap中。 运行时常量池俗称常量池,主要用于存放编译期生成的各种字面常量以及符号引用,这部分的内容将在类加载后进入常量池中存放。 java语言并不要求常量一定只有编译期才能产生,也就是并非预置入class文件中的常量池的内容才能进入运行时常量池,运行期间也可能将新的常量放入池中
shengjk1
2018-10-24
1.2K0
JVM之垃圾收集器
前言: 前面已经讨论过jvm内存运行时区域的各个部分,其中程序计数器、虚拟机栈、本地方法栈3个区域随着线程而生随着线程而灭,而java堆和方法区则不一样,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样,另外我们只有在程序处于运行期间才知道要创建什么对象以及这些对象分配多少内存。
shengjk1
2018-10-24
5080
JVM内存模型之直接内存
直接内存 又称堆外内存,也就是说这不是jvm运行时数据区的一部分,也不是java虚拟机规范中定义的内存区域,但这部分也会被频繁的使用,而且也可能导致OOM。
shengjk1
2018-10-24
6620
JVM内存模型之堆
内容 作为我们程序员最关系的部分:堆,也是占用JVM内存最大的一块。主要用来存放对象实例、数组等,也是GC发生最多的地方。java堆可以处在物理上不连续的内存空间,只要逻辑上是连续的即可。 具体来说堆分为2大部分:年轻代、年老代。而年轻代又分为:Eden空间、From Survivor空间、To Survivor空间
shengjk1
2018-10-24
4860
JVM内存模型之方法区
内容 主要用来存放已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。JDK8之前又被称为永久带 (Permanent Generation),JDK8永久带已被元空间 (MetaSpace)替代,虽然JDK1.7仍然保留永久带,但存储在永久代的部分数据就已经转移到了Java Heap或者是 Native Heap。譬如符号引用(Symbols)转移到了native heap;字面量(interned strings)转移到了java heap;类的静态变量(class statics)转移到了java heap。
shengjk1
2018-10-24
4260
JVM内存模型之栈
内容 HotSpot将java虚拟机栈与本地方法栈合并成一个了(操作系统中的栈是通过硬件ESP、EBP寄存器来实现的)。虚拟机的栈在细分,分为: 当前栈帧、局部变量表、操作栈、动态链接、返回地址等
shengjk1
2018-10-24
4150
JVM内存模型
先磨磨肩擦擦掌,小二很早就听说jvm的内存很是奇特,今日一看果然不同凡响。下面且听小二一一道来。
shengjk1
2018-10-24
6800
spring注解是如何实现的
用过spring的人都知道,spring简单的通过注解就可以完成很多时间,但这些东西是如何实现的呢以及如何应用到我们自己的代码中?接下来,让我们一起开启注解的旅程。
shengjk1
2018-10-24
9580
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档