首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JVM系列——运行时数据区

具体说一说一下每个区域: Method Area(方法区) 方法区是各个线程共享的内存区域,在虚拟机启动时创建。用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。...强调两点: 方法区在JDK 8中就是Metaspace,在JDK6或7中就是Perm Space Run-Time Constant Pool Class文件中除了有类的版本、字段、方法、接口等描述信息外...此时回看装载阶段中,会在JVM堆中生成一个代表这个类的java.lang.Class对象,作为对方法区中这些数据的访问入口。...肯定是Use使用咯,不用的话这样折腾来折腾去有什么意义?那怎样才能被使用到?换句话说里面内容怎样才能被执行?...一个线程可以执行多少个方法?这样的关系怎么维护呢? 虚拟机栈是一个线程执行的区域,保存着一个线程中方法的调用状态。

37550

Kotlin Vocabulary | 枚举和 R8 编译器

,我们都去调用另一个方法。...这个数组是从哪来的呢? 而且这个数组存储在一个被生成的类文件中。这个类文件是从哪来的? 这里究竟发生了什么呢?...这个类里面有一个存储映射信息的数组: $EnumSwitchMapping$0,接下来则是一些执行映射操作的静态代码。 示例中是只有一个 when 语句时的情况。...但如果我们写了更多的 when 语句,每个 when 语句就会生成一个对应的数组,即使这些 when 语句都在使用同一个枚举也一样。...虽然所有这些开销没什么大不了的,但是却也意味着,在您不知情的时候,会生成一个类,而且其中还包含了一些数组,这些都会让类加载和实例化消耗更多的时间。

1K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    salesforce零基础学习(一百零一)如何了解你的代码得运行上下文

    ,会以为我是一个发亮稀少,或者表情严肃的程序狗。...怎样才能判断当前这个方法运行的上下文是在trigger里面还是batch里面啊。...Quiddity Quiddity是salesforce winter21新加的枚举类,apex如果使用,api version需要50及以上。我们通过上面的连接可以看到这个枚举类中包含的枚举元素。...还有很多其他的枚举元素用于不同的场景,感兴趣的自行查看,那么如何在apex中获取当前的枚举呢,更简单了。只需要通过 Request获取当前的请求,然后调getQuiddity即可。...通过上面的博客链接,我们可以对这个功能做更好的拓展,做一个功能阀,保证我们的代码只在部分场景运行。可扩展性很多,大家可以基于自身的业务去进行使用。

    67110

    Kotlin入门(15)独门秘笈之特殊类

    嵌套类 一个类可以在单独的代码文件中定义,也可以在另一个类内部定义,后一种情况叫做嵌套类,意即A类嵌套在B类之中。乍看过去,这个嵌套类的定义似乎与Java的嵌套类是一样的,但其实有所差别。...,得在嵌套类的类名前面添加外部类的类名,相当于把这个嵌套类作为外部类的静态对象使用。...可是枚举类型实际上是一种类,开发者在代码中创建enum类型时,编译器会自动生成一个对应的类,并且该类继承自java.lang.Enum。...方法,用于打印数据对象中保存的所有字段值; 功能如此强大的数据类,犹如葵花宝典,让你功力倍增。...那么如果某个泛型函数在类内部定义,即变成了这个类的成员方法,又该如何定义它呢?

    1.3K30

    Kotlin学习日志(五)类与对象

    2.3 伴生对象 伴生对象这个是在Kotlin中有的,Java中没有,什么是伴生对象呢,你可以把它理解为“影子”,把类当做一个人,这个人可以有很多房子,但是人只有一个,影子也只有一个。...抽象方法没有具体的函数体,故而外部无法直接声明抽象类的实例,只有在子类继承时重写方法,方可使用该子类正常声明对象实例。...,然后在实现该接口的具体类中重写这几个方法,从而间接实现类似C++多重继承的功能。...四、特殊类 4.1 嵌套类 一个类可以在单独的代码文件中定义,也可以在另一个类内部定义,后一种情况叫作嵌套类,即A类嵌套在B类之中,听起来和Java的嵌套类是一样的,但其实有所差别,Java的嵌套类允许访问外部类的成员...在Android实际开发中,我们经常需要定义一些实体类来存放返回的数据,在Java中一个数据类的通常我完成以下工作: (1)定义实体类的每个字段,以及对字段进行初始赋值的构造函数。

    1.2K20

    Kotlin Vocabulary | 密封类 sealed class

    枚举类型的每个值只允许有一个实例,同时枚举也无法为每个类型添加额外信息,例如,您无法为枚举中的 "Error" 添加相关的 Exception 类型数据。...当然也可以使用一个抽象类然后让一些类继承它,这样就可以随意扩展,但这会失去枚举所带来的有限集合的优势。...子类可以是任意的类: 数据类、Kotlin 对象、普通的类,甚至也可以是另一个密封类。但不同于抽象类的是,您必须把层级声明在同一文件中,或者嵌套在类的内部。...使用 when 语句处理密封类时,如果没有覆盖所有情况,可以让编译器给我们一个错误提示。...Result 是一个抽象类,并且包含两个构造方法: 一个私有的默认构造方法 一个合成构造方法,只有 Kotlin 编译器可以使用 这意味着其他的类无法直接调用密封类的构造方法。

    1.2K10

    开发有效地 Java微服务需要Effective Java

    这些东西在很大程度上独立于我们使用的框架。...但是你怎样才能做得更好呢假设您可以让世界上最好的Java开发人员向您解释他们如何回答这些问题?...那么微服务呢在过去两年的职业生涯中,我一直在使用Spring Boot和基于Grails的微服务。...所有对象的通用方法——处理Java对象的ABC。 类和接口——Java中OOP实践的良好概述。 泛型——深入研究泛型和多态性。 枚举和注释——解释语言中经常被误解和未充分使用的特性。...举个例子: 44、喜欢使用标准的功能接口。在这里,我们深入了解了Java中的功能接口以及围绕它们的使用的最佳实践。 Java 8中一个有趣的新特性,我认为它没有得到足够广泛的使用和理解。

    41920

    从点滴基础探究Kotlin的独特魅力

    也没有对磁盘上源文件的布局强加任何限制. ③ 因为每个类代码都很小,所以kotlin建议把众多类放在一个.kt文件中即可. 8 表示和处理选择:枚举和"when" 强调: kotlin中使用"when...fun rgb() = (r * 256 + g) * 256 + b // 给枚举类定义一个方法 } 说明: ① 枚举常量在声明的时候,必须提供常量的属性值. ② 这个例子展示了 kotlin...中唯一需要使用分号的地方:如果在枚举中定义任何方法,就要使用分号把枚举常量列表和方法定义分开....使用"when"处理枚举类 fun getMnemonic(color:Color) = //直接返回一个When表达式 when(color){ // 如果颜色和枚举常量相等就返回对应的字符串...在变量名称前加上 前缀 或者 用{ }包围一个表达式,来把值注入到字符串中.③ 值对象类在kotlin中简洁的方式表示.④ kotlin 中的 if 是带返回值的表达式.⑤ when 表达式替代了

    2.7K30

    技术团队如何高效落地代码CR

    统一团队编码规范 在实际的代码CR过程中,经验丰富的老司机分别会从命名、代码结构设计、程序性能等方面进行分析。其实同样一个需求,让100个程序员来做,写出来的代码可能有100种样子,我觉得这很正常。...如果有这样的业务场景,你定义了一个订单的DTO类,其中有个字段是订单的审核状态,假设有待审核、审核通过、审核不通过三种状态,我们通过定义枚举的方式来表示不同的状态。...这里的inspectStatus分别对应枚举中的三个状态属性。大家觉得下面的代码有什么问题?...遇到这种情况我们可以在审核状态字段的注释上面加上一个@link,可以直接链接到对应的状态枚举类,这样后来维护业务的同事可以通过实体类直接查看到订单的各个审核状态,总比自己无头苍蝇的在工程中找或者问其他组内同事来的效率高...因此我们在编写代码的时候不仅要考量如何实现当前的需求,也要想着如果未来别人来维护我写的代码,那么怎样才能让后续维护的同学更好更快的掌握业务逻辑。

    1.5K20

    面向对象之this指针与类中的枚举类型

    this指针与类中的枚举类型 1.this指针 相信在坐的很多人,都在学Python,对于Python来说有self,类比到C++中就是this指针,那么下面一起来深入分析this指针在类中的使用!...(2)this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。...其次,this指针的使用: (1)在类的非静态成员函数中返回类对象本身的时候,直接使用 return *this。 (2)当参数与成员变量名相同时,如this->n = n (不能写成n = n)。...2.类中的枚举类型 有时我们希望某些常量只在类中有效。由于#define 定义的宏常量是全局的,不能达到目的,于是想到实用const 修饰数据成员来实现。...SIZE(size) // 构造函数的定义 { } A a(100); // 对象 a 的 SIZE 值为 100 A b(200); // 对象 b 的 SIZE 值为 200 怎样才能建立在整个类中都恒定的常量呢

    1.2K10

    屎一样的代码命名,心态崩了。。。

    前段时间,项目组新来的一个实习生也经常在 Code Review 因为变量命名不规范而被 “diss”,这让我想到自己刚到公司写代码那会的日子。...咱们需要先搞懂为什么要重视编程中的命名这一行为,它对于我们的编码工作有着什么意义。 为什么命名很重要呢? 这是因为 好的命名即是注释,别人一看到你的命名就知道你的变量、方法或者类是做什么的!...、常量、枚举名称需要使用蛇形命名法(snake_case) 在蛇形命名法中,各个单词之间通过下划线“_”连接,比如should_get_200_status_code_when_request_is_valid...2、测试方法名、常量、枚举名称需要使用蛇形命名法(snake_case),比如should_get_200_status_code_when_request_is_valid、CLIENT_CONNECT_SERVER_FAILURE...在日常编码过程中,我们需要谨记常见命名规范比如类名需要使用大驼峰命名法、不要使用拼音,更不要使用中文......。

    69310

    【python自动化】七月PytestAutoApi开源框架学习笔记(一)

    如果在函数定义中同时使用 *args 和 **kwargs,则表示函数将接收任意数量的位置参数和关键字参数。 如果在函数定义中在参数前加一个单星号 *,表示将所有的位置参数收集到一个元组中。...如果在函数定义中在参数前加两个星号 **,表示将所有的关键字参数收集到一个字典中。如果同时使用 * 和 **,则表示将位置参数收集到一个元组中,关键字参数收集到一个字典中。...python的@property 在 Python 中,@property 装饰器用于将一个方法转化为只读属性,让类的调用者可以像访问属性一样调用该方法,而无需显式地调用方法名。...在 Python 中,类定义中的函数可以被定义为三种不同类型的方法:staticmethod、classmethod 和普通方法(也称为实例方法)。...关于缓存 我的问题: 我将一个文件的内容直接读取到python的缓存中,从而避免频繁的IO操作,我想知道python可以有多大的缓存,保证我读取的文件数据不丢失呢 Python 语言没有直接限制缓存大小的参数

    40010

    你知道几种单例模式?

    设计模式(Design pattern)是一套被反复使用、多数人知晓的、是代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。...通俗的说,即一个类只负责一项职责。 3 设计模式的分类 GOF设计模式分类:23种 创建型设计模式: 对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。...比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。...,那么咱们就分析一下造成内存泄漏的原因,如上面代码,该单例模式中context是强引用,并且被static的变量instance持有,因为在java中静态变量在类被装载的时候分配内存,在被卸载的时候销毁...那么当我在一个Activity或者服务广播中通过LazySingleton.getInstance(BaseActivity.this);获取单例并使用, 由于LazySingleton的创建引用了Activity

    38340

    玩转Mybatis中的类型转换器TypeHandler

    2.2 EnumOrdinalTypeHandler 我们发现TypeHandler有一个实现类EnumOrdinalTypeHandler。字面意思是可以通过枚举的序号来处理类型。 ?...我们还拿枚举作为例子,然后模仿上面的两种TypeHandler。还是拿开始的例子来说通常我个人比较喜欢这么定义枚举: ? 通过继承BaseTypeHandler实现该抽象类的3个钩子方法就行了: ?...TypeHandler 实现写好了,那么如何让其发挥作用呢?我们接着往下走。 2.5 TypeHandler的核心要点 TypeHandler作用是javaType和jdbcType相互转换。...然后是在插入、更新语句中使用。它们都是相同的,这里只举一个插入例子。 ? 如果注册了别名上面的都可以使用别名来减少冗长的全限定名。...如果你使用mybatis-spring组件,可以在SqlSessionFactoryBean的setTypeHandlersPackage方法中配置typeHandler的集中包路径,那么框架将会自动扫描并注册他们

    4.3K20

    Kotlin实战【三】表示与选择

    前言 本章我们将学习怎么样在Kotlin中通过枚举和when实现表示与选择。...与java相同,枚举中可以声明属性和方法 1.2 带属性的枚举类 先看看java中的代码: public enum Color { RED(255, 0, 0), //当每个变量创建的时候,指定属性值...这个例子中展示了Kotlin语法唯一需要分号的地方:在枚举类中如果你定义任何方法,分号区分了枚举常量列表和方法声明。...接下来我们看一下枚举的处理: 二 、表示与选择之When 2.1 使用“when”来处理枚举 接下来我们使用when选择枚举,我们输入一个颜色,返回对应的一个字符串 fun getMnemonic(color...在这个例子中,代码块中最后最后一个表达式作为结果。如果你想在例子函数中加日志,你可以在代码块中完成,并用最后一个值返回。

    66010

    jvm总览-让我们从头开始,带官网解释

    )在Java堆中生成一个代表这个类的java.lang.Class对象,作为对方法区中这些数据的访问入口 3.2 链接(Link) 3.2.1 验证(Verify) 保证被加载类的正确性 文件格式验证...(3)在Java堆中生成一个代表这个类的java.lang.Class对象,作为对方法区中这些数据的访问入口 说白了就是类文件被类装载器装载进来之后,类中的内容(比如变量,常量,方法,对象等这些数据得要有个去处...值得说明的 (1)方法区在JDK 8中就是Metaspace,在JDK6或7中就是Perm Space (2)Run-Time Constant Pool Class文件中除了有类的版本、字段、方法...假如目前的阶段是初始化完成了,后续做啥呢?肯定是Use使用咯,不用的话这样折腾来折腾去有什么意义?那怎样才能被使用到?换句话说里面内容怎样才能被执行?...一个线程可以执行多少个方法?这样的关系怎么维护呢? 虚拟机栈是一个线程执行的区域,保存着一个线程中方法的调用状态。

    43810

    动态规划太难?这篇兑换钞票的故事助你通俗理解

    如果一个奇葩国家的钞票面额分别是1、5、11,那么我们在凑出15的时候,贪心策略会出错: 15=1×11+4×1 (贪心策略使用了5张钞票) 15=3×5 (正确的策略,只用...那么,现在我们怎样才能避免鼠目寸光呢? 3 我是谁 如果直接暴力枚举凑出w的方案,明显复杂度过高。太多种方法可以凑出w了,枚举它们的时间是不可承受的。我们现在来尝试找一下性质。 重新分析刚刚的例子。...当然是各种方案中,cost值最低的那一个!...它比起贪心策略,会分别算出取1、5、11的代价,从而做出一个正确决策,这样就避免掉了“鼠目寸光”! 它与暴力的区别在哪里?我们的暴力枚举了“使用的硬币”,然而这属于冗余信息。...引入这两个概念之后,我们如何判断一个问题能否使用DP解决呢? 能将大问题拆成几个小问题,且满足无后效性、最优子结构性质。

    86031

    JVM 学习笔记(一)

    (1)通过一个类的全限定名获取定义此类的二进制字节流 (2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构 (3)在Java堆中生成一个代表这个类的java.lang.Class对象,作为对方法区中这些数据的访问入口...(3)在Java堆中生成一个代表这个类的java.lang.Class对象,作为对方法区中这些数据的访问入口 说白了就是类文件被类装载器装载进来之后,类中的内容(比如变量,常量,方法,对象等这些数 据得要有个去处...值得说明的 (1)方法区在JDK 8中就是Metaspace,在JDK6或7中就是Perm Space (2)Run-Time Constant Pool Class文件中除了有类的版本、字段、方法、...肯定是Use使用咯,不用的话这样折腾来折腾去 有什么意义?那怎样才能被使用到?换句话说里面内容怎样才能被执行?...一个线程可以执行多少个方法?这样的关系怎么维护呢?   虚拟机栈是一个线程执行的区域,保存着一个线程中方法的调用状态。

    46720

    重温《Framework Design Guidelines》

    常见被违反的规范 今年升级一个核心代码从很久以前的代码改写过来的软件,各种不符合C#代码规范的代码让我感到难以维护;去年系统工程师退休前留给我们的一个代码更是让我受到会心一击。...2.2 属性 要在下列情况中使用方法而不要使用属性 该操作比字段访问要慢记个数量级。 该操作返回一个数组。 这条规范有很多种情况,我只列出常见的两种容易犯错的情况。...第一种情况在WPF尤其常见,因为对XAML来说可以用于绑定的属性好用很多,所以很多应该是方法的地方都使用属性实现。...现在我在处理的遗留代码既使用数组作为属性,又可Get和Set,毕竟是从很久以前一路修改过来的,当时的开发者应该也没想到这些代码现在会让人这么困扰吧。...2.6 事件 要用受保护的虚方法来触发事件。 要让触发事件的受保护的方法带一个参数,该参数的类型为事件参数类,该参数的名字应该为e。

    1.3K41

    比较java枚举成员使用equal还是==

    Java 必知必会 第 6 篇 (精挑 Stack Overflow在java中排名前100的问题 懂得这些问题的答案帮你解决80%开发问题 ) 问题 我知道Java枚举会被编译成一个包含私有构造参数和一堆静态方法的类...() 之间的区别,但是我仍然觉得很困惑,哪一个操作符才是我该使用的。...答案是肯定的,因为枚举有着严格的实例化控制,所以你可以用 == 去做比较符,这个用法,在官方文档中也有明确的说明。 JLS 8.9 Enums 一个枚举类型除了定义的那些枚举常量外没有其他实例了。...试图明确地说明一种枚举类型是会导致编译期异常。在枚举中final clone方法确保枚举常量从不会被克隆,而且序列化机制会确保从不会因为反序列化而创造复制的实例。枚举类型的反射实例化也是被禁止的。...(equals()方法在枚举类中是一个final方法,在参数和返回结果时,很少调用父类的equals()方法,因此是一种恒等的比较。) 什么时候 == 和 equals 不一样?

    2.3K20
    领券