![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java虚拟机(jvm)
文章平均质量分 87
基本概念
Quare_feifei
忠愚
展开
-
垃圾回收相关概念、java的四种引用
1.System.gc()的理解在默认情况下,通过System.gc()或者runtime.getruntime().gc的调用,会显示出发full gc,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存然而system.gc()调用附带一个免责声明,无法保证对垃圾收集器的调用jvm实现者可以通过system.gc()调用来决定jvm的gc行为,而一般情况下,垃圾回收是自动进行的,无需手动进行触发,否则就太过于麻烦了,在一些特殊情况下,如我们编写一个性能基准,我们可以在运行之间调用syst原创 2021-08-17 22:58:39 · 168 阅读 · 0 评论 -
String详解java
string的基本特性string:字符串,使用一对""来表示。String s1=“hello”;//字面量的方式定义String S2=new String(“hello”);string声明为final的,不可以被继承string实现了seriaizable接口,表示字符串是支持序列化的。实现了comparable接口:表示string是可以比较大小的string在jdk8及以前底层定义了 final char[] value用于存储字符串数据,jdk9时改为byte[]一个c原创 2021-08-09 23:31:08 · 346 阅读 · 0 评论 -
java对象实例化
没对象你就new 一个啊,相信用过java的很多都听过这个玩笑。那么对象实例化具体又是一个怎样的过程呢?这篇就简单总结下:1.对象的实例化对象创建的方式new最常见的方式变形1:XXX的静态方法变形2:xxxbuilder/xxxfactory的静态方法class的newInstance():反射的方式,只能调用空参的构造器,权限必须是publicConstructor的newInstance(xxx):反射的方式,可以调用空参、带参的构造器,权限没有要求使用clone():不调用原创 2021-08-06 20:47:44 · 1939 阅读 · 0 评论 -
jvm堆概述
堆1.堆的核心概述一个进程对应一个jvm实例,一个jvm实例只有一个运行时数据区,有多个线程共享同一个堆,每个线程有私有的程序计数器,本地方法栈,虚拟机栈一个jvm实例只存在一个堆内存,堆也是java内存管理的核心区域。java堆区在jvm启动时就被创建,其空间大小也就确定了,是jvm管理的最大一块内存空间堆内存大小是可以调节的《java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为是连续的所有的线程共享java堆,在这里还可以划分线程私有的缓冲原创 2021-07-14 23:17:24 · 389 阅读 · 2 评论 -
本地方法接口和本地方法栈
本地方法接口什么是本地方法?简单的来讲,一个native method就是一个Java调用非java代码的接口,一个native method就是这样一个java方法:该方法由非java语言实现,比如c,这个特征并非java所持有,很多其他的编程语言都有这样一个机制,比如在c++中,你可以使用extern“c”告知c++编译器去调用一个c的函数在定义一个native method时,并不提供实现体(有些像定义一个java interface),因此其实现是由非java语言在外边实现的。本地接口的原创 2021-07-05 02:40:04 · 72 阅读 · 0 评论 -
jvm运行时数据区
运行时数据区概述及线程内存是非常重要的系统资源,是硬盘和cpu的中间系统及桥梁,承载着操作系统和应用程序的实时运行。jvm内存布局规定了java在运行过程中的内存申请、分配、管理的策略,保证了jvm的高效稳定运行。不同的jvm对于内存的划分方式和管理机制存在着部分差异。结合jvm虚拟机规范,来探讨一下经典的jvm内存布局。主要是针对hotspotjava虚拟机定义了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着着虚拟机启动而创建(如上图红色区域),随着虚拟机的退出而销毁,另一些则是与原创 2021-07-01 05:11:01 · 377 阅读 · 1 评论 -
类加载子系统的简单介绍
类加载子系统的概览图其中主要包括三个环节:Loading 加载linking 链接initialization 初始化一、Loading 加载1.通过一个类的全限定名获取定义此类的二进制字节流2.将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构3.在内存中生成一个代表这个类的java,lang.class对象,作为方法区这个类的各种数据的访问入口。jvm支持两种类型的类加载器,分别为引导类加载器(bootstrap classloader)和自定义类加载器(u原创 2021-06-18 01:14:07 · 142 阅读 · 0 评论