• 读书笔记,《深入理解java虚拟机》,第三章 垃圾收集器与内存分配策略

    时间:2024-01-14 14:28:28

    要实现虚拟机,其实人们主要考虑完成三件事情:第一,哪些内存需要回收;第二,什么时候回收;第三,如何回收。第二节,对象已死吗    垃圾收集其实主要是针对java堆里面的数据来说的,传统的垃圾收集方法主要是基于引用计数算法,比如windows里面的com或者是actionscript3里面的flash...

  • Java基础教程(12)--深入理解类

    时间:2024-01-14 14:15:33

    一.方法的返回值  当我们在程序中调用方法时,虚拟机将会跳转到对应的方法中去执行。当以下几种情况发生时,虚拟机将会回到调用方法的语句并继续向下执行:执行完方法中所有的语句;遇到return语句;方法抛出一个异常(有关异常的内容将会在后面的文章中讨论)。  这里我们重点介绍return语句。retur...

  • 【转载】java项目中经常碰到的内存溢出问题: java.lang.OutOfMemoryError: PermGen space, 堆内存和非堆内存,写的很好,理解很方便

    时间:2024-01-12 21:25:47

    Tomcat Xms Xmx PermSize MaxPermSize 区别 及 java.lang.OutOfMemoryError: PermGen space 解决解决方案 在 catalina.bat 里的 蓝色代码前加入: 红色代码rem ----- Execute The Request...

  • 【转】输入/输出流 - 深入理解Java中的流 (Stream)

    时间:2024-01-10 16:18:05

    基于流的数据读写,太抽象了,什么叫基于流,什么是流?Hadoop是Java语言写的,所以想理解好Hadoop的Streaming Data Access,还得从Java流机制入手。流机制也是JAVA及C++中的一个重要的机制,通过流使我们能够自由地操作包括文件,内存,IO设备等等中的数据。首先,流是...

  • 理解和解决Java并发修改异常ConcurrentModificationException(转载)

    时间:2024-01-10 10:08:24

    原文地址:https://www.jianshu.com/p/f3f6b12330c1理解和解决Java并发修改异常ConcurrentModificationException不知读者在Java开发的过程中有没有遇到类似的异常信息 Exception in thread "main" java.u...

  • Java回调函数的理解

    时间:2024-01-09 16:37:47

    所谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。一般说来,C不会自己调用B,C提供B的目的就是让S来调用它,而且是C不得不提供。由于S并不知道C提供的B姓甚名谁...

  • java字符串函数及理解

    时间:2024-01-09 16:35:12

    Java中的字符串也是一连串的字符。但是与许多其他的计算机语言将字符串作为字符数组处理不同,Java将字符串作为String类型对象来处理。将字符串作为内置的对象处理允许Java提供十分丰富的功能特性以方便处理字符串。一,下面是一些使用频率比较高的函数及其相关说明。(1)substring()。它有...

  • Java回调函数的理解与实现

    时间:2024-01-09 16:26:30

    回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。在Java里面,我们使用接口来实现回调。举个例子所谓的回调,就是程序员A写了一段程序(程序a),其中预留有回调函数接口,并封装好了该程序。程序员B要让a调用自己的程序b中的一...

  • 阿里JAVA开发手册零度的思考理解(二)

    时间:2024-01-09 14:45:59

    转载请注明原创出处,谢谢!说在前面人生的大道上默默地走,就必须要有一盏灯亮着为你引导方向!而这盏灯抑或只是一句话,一句鼓励,一个赞美,一次承认,一次认可,一次相识一次交流……上篇文章:阿里JAVA开发手册零度的思考理解(一)得到作者孤尽的肯定支持,那是一个小激动啊,我会继续努力,继续阅读和思考阿里J...

  • 深入理解java内置锁(synchronized)和显式锁(ReentrantLock)

    时间:2024-01-08 20:40:01

    多线程编程中,当代码需要同步时我们会用到锁。Java为我们提供了内置锁(synchronized)和显式锁(ReentrantLock)两种同步方式。显式锁是JDK1.5引入的,这两种锁有什么异同呢?是仅仅增加了一种选择还是另有其因?本文为您一探究竟。JDK1.5中,synchronized是性能低...

  • java MVC架构-spring mvc,struct2(理解)

    时间:2024-01-08 16:24:41

    MVC架构实现基础:基于filter或者servlet实现请求地址分析,如果需要控制类处理请求,则调用相应的控制类。调用控制类时,根据配置文件初始化控制类相关的参数。数据库连接可持久化存在。控制类处理完毕,返回数据以及模板文件,渲染模板文件,返回给客户端。步骤简化,则有4步:按照配置文件或者注解,初...

  • 《深入理解Java虚拟机》调优案例分析与实战

    时间:2024-01-06 10:56:20

    上节学习回顾在上一节当中,主要学习了Sun JDK的一些命令行和可视化性能监控工具的具体使用,但性能分析的重点还是在解决问题的思路上面,没有好的思路,再好的工具也无补于事。本节学习重点在书本上本节的主要内容是讲作者在工作过程中对调优的一些经验实战。对于我们读者来说,重点是学习作者分析解决问题的具体思...

  • 深入理解JVM(二)Java内存区域

    时间:2024-01-04 09:10:19

    2.1 C、C++内存管理是由开发人员管理,而Java则交给了JVM进行自动管理2.2 JVM运行时数据区:方法区、堆(运行时线程共享),虚拟机栈、本地方法栈、程序计数器(运行时线程隔离,私有)1.程序计数器(Program Counter Register):每一个线程都独有一个程序计数器,并且分...

  • 一文理解 Java NIO 核心组件

    时间:2024-01-03 12:40:52

    同步、异步、阻塞、非阻塞首先,这几个概念非常容易搞混淆,但NIO中又有涉及,所以总结一下[1]。同步:API调用返回时调用者就知道操作的结果如何了(实际读取/写入了多少字节)。异步:相对于同步,API调用返回时调用者不知道操作的结果,后面才会回调通知结果。阻塞:当无数据可读,或者不能写入所有数据时,...

  • 【转载】深入理解Java虚拟机笔记---运行时栈帧结构

    时间:2024-01-02 22:27:16

    栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表,操作数栈,动态连接和方法返回地址等信息。第一个方法从调用开始到执行完成,就对应着一个栈帧在虚拟机栈中从入...

  • Java类的加载过程与ClassLoader的理解及测试

    时间:2024-01-01 22:21:54

    先了解下在程序准备运行某个类,但是该类还没被加载到内存中,会经过以下三个步骤:类的加载(Load)→类的连接(Link)→类的初始化(Initialize)加载:类经过javac.exe编译的.class字节码文件读入内存(将静态数据转换成堆中方法区的运行时数据结构),并为之创建一个java.lan...

  • 《深入理解Java虚拟机》- Java虚拟机是如何加载Java类的?

    时间:2024-01-01 22:03:49

    Java虚拟机是如何加载Java类的?  这个问题也就是面试常问到的Java类加载机制。在年初面试百战之后,菜鸟喜鹊也是能把这流程倒背如流啊!但是,也只是字面上的背诵,根本就是像上学时背书考试一样。tonight ! 我们把它映射到实战里,看看如何用代码说明这个流程。ready! go!  ----...

  • Java中对Clone的理解

    时间:2024-01-01 21:34:37

    面试中经常遇到Clone的相关知识,今天总算是把Clone理解的比较透彻了!Java中Clone的概念大家应该都很熟悉了,它可以让我们很方便的“制造”出一个对象的副本来,下面来具体看看java中的Clone机制是如何工作的?     1. Clone和Copy     假设现在有一个User对象,U...

  • 《深入理解Java虚拟机》笔记01 -- 运行时数据区

    时间:2024-01-01 17:30:15

    运行时数据区示意图1. 程序计数器占用一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。主要用来记录线程执行到哪条语句了,分支、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计数器来完成。如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;...

  • 深入理解java虚拟机【Java Class类文件结构】

    时间:2024-01-01 16:01:03

    Java语言从诞生之时就宣称一次编写,到处运行的跨平台特性,其实现原理是源码文件并没有直接编译成机器指令,而是编译成Java虚拟机可以识别和运行的字节码文件(Class类文件,*.class),字节码文件是一种平台无关的中间编译结果,字节码文件由java虚拟机读取,解析和执行,java虚拟机屏蔽了不...