constant buffer(oraclesqlloader全攻略)

2025-08-31 01:45:01 :0

constant buffer(oraclesqlloader全攻略)

本篇文章给大家谈谈constant buffer,以及oraclesqlloader全攻略对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

本文目录

oraclesqlloader全攻略

一 sql loader 的特点oracle自己带了很多的工具可以用来进行数据的迁移 备份和恢复等工作 但是每个工具都有自己的特点 比如说exp和imp可以对数据库中的数据进行导出和导出的工作 是一种很好的数据库备份和恢复的工具 因此主要用在数据库的热备份和恢复方面 有着速度快 使用简单 快捷的优点 同时也有一些缺点 比如在不同版本数据库之间的导出 导入的过程之中 总会出现这样或者那样的问题 这个也许是oracle公司自己产品的兼容性的问题吧 sql loader 工具却没有这方面的问题 它可以把一些以文本格式存放的数据顺利的导入到oracle数据库中 是一种在不同数据库之间进行数据迁移的非常方便而且通用的工具 缺点就速度比较慢 另外对blob等类型的数据就有点麻烦了 二 sql loader 的帮助

  C:\》sqlldr

  SQL*Loader: Release Production on 星期六 月 : :

  Copyright (c) Oracle Corporation All rights reserved

  用法: SQLLDR keyword=value

  有效的关键字:

  userid ORACLE username/passwordcontrol Control file namelog Log file namebad Bad file namedata Data file namediscard Discard file namediscardmax Number of discards to allow (全部默认)skip Number of logical records to skip (默认 )load Number of logical records to load (全部默认)errors Number of errors to allow (默认 )rows Number of rows in conventional path bind array or beeen direct path data saves(默认: 常规路径 所有直接路径)bindsize Size of conventional path bind array in bytes(默认 )silent Suppress messages during run (header feedback errors discards partitions)direct use direct path (默认FALSE)parfile parameter file: name of file that contains parameter specificationsparallel do parallel load (默认FALSE)file File to allocate extents fromskip_unusable_indexes disallow/allow unusable indexes or index partitions(默认FALSE)skip_index_maintenance do not maintain indexes mark affected indexes as unusable(默认FALSE)readsize Size of Read buffer (默认 )external_table use external table for load; NOT_USED GENERATE_ONLY EXECUTE(默认NOT_USED)columnarrayrows Number of rows for direct path column array(默认 )streamsize Size of direct path stream buffer in bytes(默认 )multithreading use multithreading in direct pathresumable enable or disable resumable for current session(默认FALSE)resumable_name text string to help identify resumable statementresumable_timeout wait time (in seconds) for RESUMABLE(默认 )date_cache size (in entries) of date conversion cache(默认 )

  PLEASE NOTE: 命令行参数可以由位置或关键字指定 前者的例子是 sqlloadscott/tiger foo ; 后一种情况的一个示例是 sqlldr control=foouserid=scott/tiger 位置指定参数的时间必须早于但不可迟于由关键字指定的参数 例如 允许 sqlldr scott/tiger control=foo logfile=log 但是不允许 sqlldr scott/tiger control=foo log 即使参数 log 的位置正确

  C:\》

  三 sql loader使用例子a)SQLLoader将 Excel 数据导出到 Oracle 创建SQL*Loader输入数据所需要的文件 均保存到C:\ 用记事本 控制文件 input ctl 内容如下    load data           控制文件标识    infile test txt        要输入的数据文件名为test txt    append into table test     向表test中追加记录    fields terminated by X    字段终止于X 是一个制表符(TAB)    (id username password sj)   定义列对应顺序 a insert 为缺省方式 在数据装载开始时要求表为空 b append 在表中追加新记录 c replace 删除旧记录 替换成新装载的记录 d truncate 同上 在DOS窗口下使用SQL*Loader命令实现数据的输入 C:\》sqlldr userid=system/manager control=input ctl 默认日志文件名为 input log 默认坏记录文件为 input bad 还有一种方法可以把EXCEL文件另存为CSV(逗号分隔)(* csv) 控制文件就改为用逗号分隔 LOAD DATA INFILE d:\car csv APPEND INTO TABLE t_car_temp FIELDS TERMINATED BY (phoneno vip_car)

  b)在控制文件中直接导入数据

   控制文件test ctl的内容 The format for executing this file with SQL Loader is: SQLLDR control=《filename》 Be sure to substitute your version of SQL LOADER and the filename for this file LOAD DATAINFILE *BADFILE C:\Documents and Settings\Jackey\桌面\WMCOUNTRY BAD DISCARDFILE C:\Documents and Settings\Jackey\桌面\WMCOUNTRY DSC INSERT INTO TABLE EMCCOUNTRYFields terminated by ; Optionally enclosed by (COUNTRYID NULLIF (COUNTRYID= NULL ) COUNTRYCODE COUNTRYNAME CONTINENTID NULLIF (CONTINENTID= NULL ) MAPID NULLIF (MAPID= NULL ) CREATETIME DATE MM/DD/YYYY HH :MI:SS NULLIF (CREATETIME= NULL ) LASTMODIFIEDTIME DATE MM/DD/YYYY HH :MI:SS NULLIF (LASTMODIFIEDTIME= NULL ))BEGINDATA ; JP ; Japan ; ; ; / / : : ;NULL ; CN ; China ; ; ; / / : : ;NULL ; IN ; India ; ; ; / / : : ;NULL ; AU ; Australia ; ; ; / / : : ;NULL ; CA ; Canada ; ; ; / / : : ;NULL ; US ; United States ; ; ; / / : : ;NULL ; MX ; Mexico ; ; ; / / : : ;NULL ; GB ; United Kingdom ; ; ; / / : : ;NULL ; DE ; Germany ; ; ; / / : : ;NULL ; FR ; France ; ; ; / / : : ;NULL ; IT ; Italy ; ; ; / / : : ;NULL ; ES ; Spain ; ; ; / / : : ;NULL ; FI ; Finland ; ; ; / / : : ;NULL ; SE ; Sweden ; ; ; / / : : ;NULL ; IE ; Ireland ; ; ; / / : : ;NULL ; NL ; Netherlands ; ; ; / / : : ;NULL ; DK ; Denmark ; ; ; / / : : ;NULL ; BR ; Brazil ; ; ; / / : : ;NULL ; KR ; Korea Republic of ; ; ; / / : : ;NULL ; NZ ; New Zealand ; ; ; / / : : ;NULL ; BE ; Belgium ; ; ; / / : : ;NULL ; AT ; Austria ; ; ; / / : : ;NULL ; NO ; Norway ; ; ; / / : : ;NULL ; LU ; Luxembourg ; ; ; / / : : ;NULL ; PT ; Portugal ; ; ; / / : : ;NULL ; GR ; Greece ; ; ; / / : : ;NULL ; IL ; Israel ; ; ; / / : : ;NULL ; CH ; Switzerland ; ; ; / / : : ;NULL ; A ; Anonymous Proxy ; ; ; / / : : ;NULL ; A ; Satellite Provider ; ; ; / / : : ;NULL ; AD ; Andorra ; ; ; / / : : ;NULL ; AE ; United Arab Emirates ; ; ; / / : : ;NULL ; AF ; Afghanistan ; ; ; / / : : ;NULL ; AG ; Antigua and Barbuda ; ; ; / / : : ;NULL ; AI ; Anguilla ; ; ; / / : : ;NULL ; AL ; Albania ; ; ; / / : : ;NULL ; AM ; armenia ; ; ; / / : : ;NULL ; AN ; Netherlands Antilles ; ; ; / / : : ;NULL ; AO ; Angola ; ; ; / / : : ;NULL ; AP ; Asia/Pacific Region ; ; ; / / : : ;NULL ; AQ ; Antarctica ; ; ; / / : : ;NULL ; AR ; Argentina ; ; ; / / : : ;NULL ; AS ; American Samoa ; ; ; / / : : ;NULL ; AW ; Aruba ; ; ; / / : : ;NULL ; AZ ; Azerbaijan ; ; ; / / : : ;NULL ; BA ; Bosnia and Herzegovina ; ; ; / / : : ;NULL ; BB ; Barbados ; ; ; / / : : ;NULL ; BD ; Bangladesh ; ; ; / / : : ;NULL ; BF ; Burkina Faso ; ; ; / / : : ;NULL ; BG ; Bulgaria ; ; ; / / : : ;NULL ; BH ; Bahrain ; ; ; / / : : ;NULL ; BI ; Burundi ; ; ; / / : : ;NULL ; BJ ; Benin ; ; ; / / : : ;NULL ; BM ; Bermuda ; ; ; / / : : ;NULL ; BN ; Brunei Darussalam ; ; ; / / : : ;NULL ; BO ; Bolivia ; ; ; / / : : ;NULL ; BS ; Bahamas ; ; ; / / : : ;NULL ; BT ; Bhutan ; ; ; / / : : ;NULL ; BV ; Bouvet Island ; ; ; / / : : ;NULL ; BW ; Botswana ; ; ; / / : : ;NULL ; BY ; Belarus ; ; ; / / : : ;NULL 执行导入命令C:\》sqlldr userid=system/manager control=test ctl

    

    

    

    

   part ii

SQL*Loader是Oracle数据库导入外部数据的一个工具 它和DB 的Load工具相似 但有更多的选择 它支持变化的加载模式 可选的加载及多表加载   如何使用 SQL*Loader 工具  我们可以用Oracle的sqlldr工具来导入数据 例如:  sqlldr scott/tiger control=loader ctl  控制文件(loader ctl) 将加载一个外部数据文件(含分隔符) loader ctl如下:  load data  infile c:\data\mydata csv   into table emp  fields terminated by optionally enclosed by   ( empno empname sal deptno )  mydata csv 如下:   Scott Tiger    Frank Naude   下面是一个指定记录长度的示例控制文件 * 代表数据文件与此文件同名 即在后面使用BEGINDATA段来标识数据   load data  infile *  replace  into table departments  ( dept position ( : ) char( )   deptname position ( : ) char( )  )  begindata  COSC PUTER SCIENCE  ENGL ENGLISH LITERATURE  MATH MATHEMATICS  POLY POLITICAL SCIENCE  Unloader这样的工具  Oracle 没有提供将数据导出到一个文件的工具 但是 我们可以用SQL*Plus的select 及 format 数据来输出到一个文件   set echo off newpage space pagesize feed off head off trimspool on  spool oradata txt  select col || || col || || col   from tab   where col = XYZ ;  spool off  另外 也可以使用使用 UTL_FILE PL/SQL 包处理:  rem Remember to update initSID ora utl_file_dir= c:\oradata parameter  declare  fp utl_file file_type;  begin  fp := utl_file fopen( c:\oradata tab txt w );  utl_file putf(fp %s %s\n TextField );  utl_file fclose(fp);  end;  /  当然你也可以使用第三方工具 如SQLWays TOAD for Quest等   加载可变长度或指定长度的记录  如   LOAD DATA  INFILE *  INTO TABLE load_delimited_data  FIELDS TERMINATED BY OPTIONALLY ENCLOSED BY   TRAILING NULLCOLS  ( data   data   )  BEGINDATA   AAAAAAAAAA   A B C D   下面是导入固定位置(固定长度)数据示例   LOAD DATA  INFILE *  INTO TABLE load_positional_data  ( data POSITION( : )   data POSITION( : )  )  BEGINDATA   AAAAAAAAAA   BBBBBBBBBB  跳过数据行   可以用 SKIP n 关键字来指定导入时可以跳过多少行数据 如   LOAD DATA  INFILE *  INTO TABLE load_positional_data  SKIP   ( data POSITION( : )   data POSITION( : )  )  BEGINDATA   AAAAAAAAAA   BBBBBBBBBB  导入数据时修改数据   在导入数据到数据库时 可以修改数据 注意 这仅适合于常规导入 并不适合 direct导入方式 如   LOAD DATA  INFILE *  INTO TABLE modified_data  ( rec_no my_db_sequence nextval   region CONSTANT   time_loaded to_char(SYSDATE HH :MI )   data POSITION( : ) :data /   data POSITION( : ) upper(:data )   data POSITION( : ) to_date(:data YYMMDD )   )  BEGINDATA   AAAAAAAAAA    BBBBBBBBBB   LOAD DATA  INFILE mail_orders txt   BADFILE bad_orders txt   APPEND  INTO TABLE mailing_list  FIELDS TERMINATED BY   ( addr   city   state   zipcode   mailing_addr decode(:mailing_addr null :addr :mailing_addr)   mailing_city decode(:mailing_city null :city :mailing_city)   mailing_state  )  将数据导入多个表   如:  LOAD DATA  INFILE *  REPLACE  INTO TABLE emp  WHEN empno !=   ( empno POSITION( : ) INTEGER EXTERNAL   ename POSITION( : ) CHAR   deptno POSITION( : ) CHAR   mgr POSITION( : ) INTEGER EXTERNAL  )  INTO TABLE proj  WHEN projno !=   ( projno POSITION( : ) INTEGER EXTERNAL   empno POSITION( : ) INTEGER EXTERNAL  )  导入选定的记录   如下例 ( ) 代表第一个字符 ( : ) 代表 到 之间的字符:  LOAD DATA  INFILE mydata dat BADFILE mydata bad DISCARDFILE mydata dis   APPEND  INTO TABLE my_selective_table  WHEN ( ) 《》 H and ( ) 《》 T and ( : ) =   (  region CONSTANT   service_key POSITION( : ) INTEGER EXTERNAL   call_b_no POSITION( : ) CHAR  )  导入时跳过某些字段   可用 POSTION(x:y) 来分隔数据 在Oracle i中可以通过指定 FILLER 字段实现 FILLER 字段用来跳过 忽略导入数据文件中的字段 如   LOAD DATA  TRUNCATE INTO TABLE T   FIELDS TERMINATED BY   ( field   field FILLER   field   )  导入多行记录   可以使用下面两个选项之一来实现将多行数据导入为一个记录:  CONCATENATE: use when SQL*Loader should bine the same number of physical records together to form one logical record   CONTINUEIF use if a condition indicates that multiple records should be treated as one Eg by having a # character in column   SQL*Loader 数据的提交   一般情况下是在导入数据文件数据后提交的   也可以通过指定 ROWS= 参数来指定每次提交记录数   提高 SQL*Loader 的性能    ) 一个简单而容易忽略的问题是 没有对导入的表使用任何索引和/或约束(主键) 如果这样做 甚至在使用ROWS=参数时 会很明显降低数据库导入性能    ) 可以添加 DIRECT=TRUE来提高导入数据的性能 当然 在很多情况下 不能使用此参数    ) 通过指定 UNRECOVERABLE选项 可以关闭数据库的日志 这个选项只能和 direct 一起使用    ) 可以同时运行多个导入任务   常规导入与direct导入方式的区别   常规导入可以通过使用 INSERT语句来导入数据 Direct导入可以跳过数据库的相关逻辑(DIRECT=TRUE) 而直接将数据导入到数据文件中 lishixinzhi/Article/program/Oracle/201311/17401

Spring boot的Controller类是如何指定HTML页面的

创建PageController,编码如下:
package org.springboot.sample.controller;
import java.util.Date;
import java.util.Map;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class PageController {
// 从 application.properties 中读取配置,如取不到默认值为Hello Shanhy
@Value("${application.hell:Hello Shanhy}")
private String hello = "Hello Shanhy";
/**
* 默认页《br/》
* @RequestMapping("/") 和 @RequestMapping 是有区别的
* 如果不写参数,则为全局默认页,加入输入404页面,也会自动访问到这个页面。
* 如果加了参数“/”,则只认为是根页面。
*
* @return
* @author SHANHY
* @create 2016年1月5日
*/
@RequestMapping(value = {"/","/index"})
public String index(Map《String, Object》 model){
// 直接返回字符串,框架默认会去 spring.view.prefix 目录下的 (index拼接spring.view.suffix)页面
// 本例为 /WEB-INF/jsp/index.jsp
model.put("time", new Date());
model.put("message", this.hello);
return "index";
}
/**
* 响应到JSP页面page1
*
* @return
* @author SHANHY
* @create 2016年1月5日
*/
@RequestMapping("/page1")
public ModelAndView page1(){
// 页面位置 /WEB-INF/jsp/page/page.jsp
ModelAndView mav = new ModelAndView("page/page1");
mav.addObject("content", hello);
return mav;
}
/**
* 响应到JSP页面page1(可以直接使用Model封装内容,直接返回页面字符串)
*
* @return
* @author SHANHY
* @create 2016年1月5日
*/
@RequestMapping("/page2")
public String page2(Model model){
// 页面位置 /WEB-INF/jsp/page/page.jsp
model.addAttribute("content", hello + "(第二种)");
return "page/page1";
}
}123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
pom.xml添加依赖:
《dependency》
《groupId》org.apache.tomcat.embed《/groupId》
《artifactId》tomcat-embed-jasper《/artifactId》
《scope》provided《/scope》
《/dependency》
《dependency》
《groupId》javax.servlet《/groupId》
《artifactId》jstl《/artifactId》
《/dependency》123456789
上面说了spring-boot 不推荐JSP,想使用JSP需要配置application.properties。
添加src/main/resources/application.properties内容:
# 页面默认前缀目录
spring.mvc.view.prefix=/WEB-INF/jsp/
# 响应页面默认后缀
spring.mvc.view.suffix=.jsp
# 自定义属性,可以在Controller中读取
application.hello=Hello Shanhy123456
在 src/main 下面创建 webapp/WEB-INF/jsp 目录用来存放我们的jsp页面。
index.jsp
《%@ page language="java" pageEncoding="UTF-8"%》
《!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"》
《html》
《head》
《title》Spring Boot Sample《/title》
《/head》
《body》
Time: ${time}
《br》
Message: ${message}
《/body》
《/html》12345678910111213
page1.jsp
《%@ page language="java" pageEncoding="UTF-8"%》
《!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"》
《html》
《head》
《title》Spring Boot Sample《/title》
《/head》
《body》
《h1》${content }《/h1》
《/body》
《/html》1234567891011
要想让spring-boot支持JSP,需要将项目打成war包。
我们做最后一点修改,修改pom.xml文件,将 jar 中的 jar 修改为 war
然后启动spring-boot服务。

Java JVM怎么学习啊从哪方面入手

  一、 JVM的生命周期
  1. JVM实例对应了一个独立运行的java程序它是进程级别
  a) 启动。启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String args)函数的class都可以作为JVM实例运行的起点
  b) 运行。main()作为该程序初始线程的起点,任何其他线程均由该线程启动。JVM内部有两种线程:守护线程和非守护线程,main()属于非守护线程,守护线程通常由JVM自己使用,java程序也可以标明自己创建的线程是守护线程
  c) 消亡。当程序中的所有非守护线程都终止时,JVM才退出;若安全管理器允许,程序也可以使用Runtime类或者System.exit()来退出
  2. JVM执行引擎实例则对应了属于用户运行程序的线程它是线程级别的
  
  二、 JVM的体系结构
  
  1. 类装载器(ClassLoader)(用来装载.class文件)
  2. 执行引擎(执行字节码,或者执行本地方法)
  3. 运行时数据区(方法区、堆、java栈、PC寄存器、本地方法栈)
  
  三、 JVM类加载器
  JVM整个类加载过程的步骤:
  1. 装载
  装载过程负责找到二进制字节码并加载至JVM中,JVM通过类名、类所在的包名通过ClassLoader来完成类的加载,同样,也采用以上三个元素来标识一个被加载了的类:类名+
  包名+ClassLoader实例ID。
  2. 链接
  链接过程负责对二进制字节码的格式进行校验、初始化装载类中的静态变量以及解析类中调用的接口、类。
  完成校验后,JVM初始化类中的静态变量,并将其值赋为默认值。
  最后对类中的所有属性、方法进行验证,以确保其需要调用的属性、方法存在,以及具备应的权限(例如public、private域权限等),会造成NoSuchMethodError、NoSuchFieldError等错误信息。
  3. 初始化
  初始化过程即为执行类中的静态初始化代码、构造器代码以及静态属性的初始化,在四种情况下初始化过程会被触发执行:
  调用了new;
  反射调用了类中的方法;
  子类调用了初始化;
  JVM启动过程中指定的初始化类。
  
  JVM类加载顺序:
  JVM两种类装载器包括:启动类装载器和用户自定义类装载器。
  启动类装载器是JVM实现的一部分;
  用户自定义类装载器则是Java程序的一部分,必须是ClassLoader类的子类。
  JVM装载顺序:
  Jvm启动时,由Bootstrap向User-Defined方向加载类;
  应用进行ClassLoader时,由User-Defined向Bootstrap方向查找并加载类;
  1. Bootstrap ClassLoader
  这是JVM的根ClassLoader,它是用C++实现的,JVM启动时初始化此ClassLoader,并由此ClassLoader完成$JAVA_HOME中jre/lib/rt.jar(Sun JDK的实现)中所有class文件的加载,这个jar中包含了java规范定义的所有接口以及实现。
  2. Extension ClassLoader
  JVM用此classloader来加载扩展功能的一些jar包。
  3. System ClassLoader
  JVM用此classloader来加载启动参数中指定的Classpath中的jar包以及目录,在Sun JDK中ClassLoader对应的类名为AppClassLoader。
  4. User-Defined ClassLoader
  User-DefinedClassLoader是Java开发人员继承ClassLoader抽象类自行实现的ClassLoader,基于自定义的ClassLoader可用于加载非Classpath中的jar以及目录。
  
  ClassLoader抽象类的几个关键方法:
  (1) loadClass
  此方法负责加载指定名字的类,ClassLoader的实现方法为先从已经加载的类中寻找,如没有则继续从parent ClassLoader中寻找,如仍然没找到,则从System ClassLoader中寻找,最后再调用findClass方法来寻找,如要改变类的加载顺序,则可覆盖此方法
  (2) findLoadedClass
  此方法负责从当前ClassLoader实例对象的缓存中寻找已加载的类,调用的为native的方法。
  (3) findClass
  此方法直接抛出ClassNotFoundException,因此需要通过覆盖loadClass或此方法来以自定义的方式加载相应的类。
  (4) findSystemClass
  此方法负责从System ClassLoader中寻找类,如未找到,则继续从Bootstrap ClassLoader中寻找,如仍然为找到,则返回null。
  (5) defineClass
  此方法负责将二进制的字节码转换为Class对象
  (6) resolveClass
  此方法负责完成Class对象的链接,如已链接过,则会直接返回。
  
  四、 JVM执行引擎
  在执行方法时JVM提供了四种指令来执行:
  (1)invokestatic:调用类的static方法
  (2)invokevirtual:调用对象实例的方法
  (3)invokeinterface:将属性定义为接口来进行调用
  (4)invokespecial:JVM对于初始化对象(Java构造器的方法为:《init》)以及调用对象实例中的私有方法时。
  
  主要的执行技术有:
  解释,即时编译,自适应优化、芯片级直接执行
  (1)解释属于第一代JVM,
  (2)即时编译JIT属于第二代JVM,
  (3)自适应优化(目前Sun的HotspotJVM采用这种技术)则吸取第一代JVM和第二代
  JVM的经验,采用两者结合的方式
  开始对所有的代码都采取解释执行的方式,并监视代码执行情况,然后对那些经常调用的方法启动一个后台线程,将其编译为本地代码,并进行优化。若方法不再频繁使用,则取消编译过的代码,仍对其进行解释执行。
  
  五、 JVM运行时数据区
  第一块:PC寄存器
  PC寄存器是用于存储每个线程下一步将执行的JVM指令,如该方法为native的,则PC寄存器中不存储任何信息。
  第二块:JVM栈
  JVM栈是线程私有的,每个线程创建的同时都会创建JVM栈,JVM栈中存放的为当前线程中局部基本类型的变量(java中定义的八种基本类型:boolean、char、byte、short、int、long、float、double)、部分的返回结果以及Stack Frame,非基本类型的对象在JVM栈上仅存放一个指向堆上的地址
  第三块:堆(Heap)
  它是JVM用来存储对象实例以及数组值的区域,可以认为Java中所有通过new创建的对象的内存都在此分配,Heap中的对象的内存需要等待GC进行回收。
  (1) 堆是JVM中所有线程共享的,因此在其上进行对象内存的分配均需要进行加锁,这也导致了new对象的开销是比较大的
  (2) Sun Hotspot JVM为了提升对象内存分配的效率,对于所创建的线程都会分配一块独立的空间TLAB(Thread Local Allocation Buffer),其大小由JVM根据运行的情况计算而得,在TLAB上分配对象时不需要加锁,因此JVM在给线程的对象分配内存时会尽量的在TLAB上分配,在这种情况下JVM中分配对象内存的性能和C基本是一样高效的,但如果对象过大的话则仍然是直接使用堆空间分配
  (3) TLAB仅作用于新生代的Eden Space,因此在编写Java程序时,通常多个小的对象比大的对象分配起来更加高效。
  第四块:方法区域(Method Area)
  (1)在Sun JDK中这块区域对应的为PermanetGeneration,又称为持久代。
  (2)方法区域存放了所加载的类的信息(名称、修饰符等)、类中的静态变量、类中定义为final类型的常量、类中的Field信息、类中的方法信息,当开发人员在程序中通过Class
  对象中的getName、isInterface等方法来获取信息时,这些数据都来源于方法区域,同时方法区域也是全局共享的,在一定的条件下它也会被GC,当方法区域需要使用的内存超过其允许的大小时,会抛出OutOfMemory的错误信息。
  第五块:运行时常量池(Runtime Constant Pool)
  存放的为类中的固定的常量信息、方法和Field的引用信息等,其空间从方法区域中分配。
  第六块:本地方法堆栈(Native Method Stacks)
  JVM采用本地方法堆栈来支持native方法的执行,此区域用于存储每个native方法调用的状态。
  
  六、 JVM垃圾回收
  GC的基本原理:将内存中不再被使用的对象进行回收,GC中用于回收的方法称为收集器,由于GC需要消耗一些资源和时间,Java在对对象的生命周期特征进行分析后,按照新生代、旧生代的方式来对对象进行收集,以尽可能的缩短GC对应用造成的暂停
  (1)对新生代的对象的收集称为minor GC;
  (2)对旧生代的对象的收集称为Full GC;
  (3)程序中主动调用System.gc()强制执行的GC为Full GC。
  不同的对象引用类型, GC会采用不同的方法进行回收,JVM对象的引用分为了四种类型:
  (1)强引用:默认情况下,对象采用的均为强引用(这个对象的实例没有其他对象引用,GC时才会被回收)
  (2)软引用:软引用是Java中提供的一种比较适合于缓存场景的应用(只有在内存不够用的情况下才会被GC)
  (3)弱引用:在GC时一定会被GC回收
  (4)虚引用:由于虚引用只是用来得知对象是否被GC

关于constant buffer到此分享完毕,希望能帮助到您。

constant buffer(oraclesqlloader全攻略)

本文编辑:admin

更多文章:


特殊字符ascii码范围(字符A到Z的ASCII代码是多少)

特殊字符ascii码范围(字符A到Z的ASCII代码是多少)

“特殊字符ascii码范围”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看特殊字符ascii码范围(字符A到Z的ASCII代码是多少)!本文目录字符A到Z的ASCII代码是多少ascii码值是多少大小写字母和数字的ascii

2025年9月22日 12:30

while语句的描述中正确(设有程序段 int k=10; while(k==0) k-; 则下面描述中正确的是( ). 这怎么做)

while语句的描述中正确(设有程序段 int k=10; while(k==0) k-; 则下面描述中正确的是( ). 这怎么做)

其实while语句的描述中正确的问题并不复杂,但是又很多的朋友都不太了解设有程序段 int k=10; while(k==0) k-; 则下面描述中正确的是( ). 这怎么做,因此呢,今天小编就来为大家分享while语句的描述中正确的一些知

2026年1月7日 19:00

sql语句中union用法(mysql中的union用法)

sql语句中union用法(mysql中的union用法)

大家好,sql语句中union用法相信很多的网友都不是很明白,包括mysql中的union用法也是一样,不过没有关系,接下来就来为大家分享关于sql语句中union用法和mysql中的union用法的一些知识点,大家可以关注收藏,免得下次来

2026年2月20日 10:45

jdk怎么读(java的读音到底是怎么读的啊怎么每个人的读法都不一样啊)

jdk怎么读(java的读音到底是怎么读的啊怎么每个人的读法都不一样啊)

其实jdk怎么读的问题并不复杂,但是又很多的朋友都不太了解java的读音到底是怎么读的啊怎么每个人的读法都不一样啊,因此呢,今天小编就来为大家分享jdk怎么读的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录jav

2026年4月30日 15:30

网站已改版 请点击进入(中国卫生人才网怎么进不去了,显示网页无法访问)

网站已改版 请点击进入(中国卫生人才网怎么进不去了,显示网页无法访问)

大家好,网站已改版 请点击进入相信很多的网友都不是很明白,包括中国卫生人才网怎么进不去了,显示网页无法访问也是一样,不过没有关系,接下来就来为大家分享关于网站已改版 请点击进入和中国卫生人才网怎么进不去了,显示网页无法访问的一些知识点,大家

2025年12月24日 18:00

越狱软件下载 苹果(不越狱下载越狱软件)

越狱软件下载 苹果(不越狱下载越狱软件)

其实越狱软件下载 苹果的问题并不复杂,但是又很多的朋友都不太了解不越狱下载越狱软件,因此呢,今天小编就来为大家分享越狱软件下载 苹果的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录不越狱下载越狱软件iPhone6

2026年8月28日 03:00

center形容词(center是中心的意思吗)

center形容词(center是中心的意思吗)

大家好,center形容词相信很多的网友都不是很明白,包括center是中心的意思吗也是一样,不过没有关系,接下来就来为大家分享关于center形容词和center是中心的意思吗的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开

2026年9月25日 09:45

企业网站的基本内容(请问建立企业网站要考虑哪些基本内容)

企业网站的基本内容(请问建立企业网站要考虑哪些基本内容)

其实企业网站的基本内容的问题并不复杂,但是又很多的朋友都不太了解请问建立企业网站要考虑哪些基本内容,因此呢,今天小编就来为大家分享企业网站的基本内容的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录请问建立企业网站

2026年4月10日 07:45

c语言程序设计谭浩强2020(谭浩强c语言程序设计多久能学完)

c语言程序设计谭浩强2020(谭浩强c语言程序设计多久能学完)

各位老铁们好,相信很多人对c语言程序设计谭浩强2020都不是特别的了解,因此呢,今天就来为大家分享下关于c语言程序设计谭浩强2020以及谭浩强c语言程序设计多久能学完的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目

2025年10月12日 00:15

parsefloat js(JS中 parseFloat() 函数)

parsefloat js(JS中 parseFloat() 函数)

本篇文章给大家谈谈parsefloat js,以及JS中 parseFloat() 函数对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录JS中 parseFloat() 函数js获得文本框的值怎么转化成数值型啊JS中,通过pa

2026年5月27日 05:00

lengthening是什么意思(Extension Risk是什么意思)

lengthening是什么意思(Extension Risk是什么意思)

各位老铁们好,相信很多人对lengthening是什么意思都不是特别的了解,因此呢,今天就来为大家分享下关于lengthening是什么意思以及Extension Risk是什么意思的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起

2026年1月1日 21:15

mysql笔试题目及答案(2018年计算机二级考试MySQL巩固试题三)

mysql笔试题目及答案(2018年计算机二级考试MySQL巩固试题三)

各位老铁们好,相信很多人对mysql笔试题目及答案都不是特别的了解,因此呢,今天就来为大家分享下关于mysql笔试题目及答案以及2018年计算机二级考试MySQL巩固试题三的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2025年9月17日 14:45

正弦余弦正切值对照表图(tan30度 tan45度 tan60度 tan90度等于多少)

正弦余弦正切值对照表图(tan30度 tan45度 tan60度 tan90度等于多少)

“正弦余弦正切值对照表图”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看正弦余弦正切值对照表图(tan30度 tan45度 tan60度 tan90度等于多少)!本文目录tan30度 tan45度 tan60度 tan90度

2026年2月5日 19:45

安卓开发语言kotlin(安卓手机游戏《铁锈战争》是什么语言写的)

安卓开发语言kotlin(安卓手机游戏《铁锈战争》是什么语言写的)

各位老铁们好,相信很多人对安卓开发语言kotlin都不是特别的了解,因此呢,今天就来为大家分享下关于安卓开发语言kotlin以及安卓手机游戏《铁锈战争》是什么语言写的的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目

2025年5月28日 22:30

小型linux系统中文版(有图像界面的linux系统,最小的是哪个版本(支持中文的),有多大)

小型linux系统中文版(有图像界面的linux系统,最小的是哪个版本(支持中文的),有多大)

本篇文章给大家谈谈小型linux系统中文版,以及有图像界面的linux系统,最小的是哪个版本(支持中文的),有多大对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘

2025年12月31日 07:00

echarts是中文吗(e chart s是基于什么实现的)

echarts是中文吗(e chart s是基于什么实现的)

大家好,如果您还对echarts是中文吗不太了解,没有关系,今天就由本站为大家分享echarts是中文吗的知识,包括e chart s是基于什么实现的的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录e chart

2025年12月8日 03:00

安装教程视频(路由器怎么安装视频教程)

安装教程视频(路由器怎么安装视频教程)

“安装教程视频”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看安装教程视频(路由器怎么安装视频教程)!本文目录路由器怎么安装视频教程张孝祥java视频教程全集下载电视支架安装视频教程衣服架安装视频教程摄像头安装方法视频教程无

2025年8月9日 01:30

executor用法(线程池之ThreadPoolExecutor使用)

executor用法(线程池之ThreadPoolExecutor使用)

大家好,关于executor用法很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于线程池之ThreadPoolExecutor使用的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望

2025年12月22日 01:30

基于solidworks的机械毕业设计(sw如何设计三维机械图SolIDWorks2019三维机械设计制图!)

基于solidworks的机械毕业设计(sw如何设计三维机械图SolIDWorks2019三维机械设计制图!)

本篇文章给大家谈谈基于solidworks的机械毕业设计,以及sw如何设计三维机械图SolIDWorks2019三维机械设计制图!对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了

2026年7月9日 23:30

matrix平台(Gitter:面向开发者的跨平台开源社区平台)

matrix平台(Gitter:面向开发者的跨平台开源社区平台)

各位老铁们好,相信很多人对matrix平台都不是特别的了解,因此呢,今天就来为大家分享下关于matrix平台以及Gitter:面向开发者的跨平台开源社区平台的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录Gitt

2025年10月29日 17:30

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索