1.22关于new动作的分析(编译时加载类信息,运行时分配内存)

本文澄清了Java中Class.forName()动态加载与new操作符之间的误解。详细解释了new操作符并非在编译期完成,而是在运行期进行内存分配的过程,并强调了类信息的加载时机。

在学习类型信息那个章节的时候,看到了Class.forName()是动态加载类信息,而new是静态加载类信息,在这里,错误的new动作理解成了发生在静态编译期。


正确的理解:编译期大部分是检查语法,我们需要new动作所需要的类信息,完成new动作就要获得相关的类信息,这些类信息是编译期获得的,即静态加载类信息,然而我们的new动作(即真正分配内存的动作)是发生在运行时的。

通常情况下,Nginx 要使用 `fastdfs-nginx-module-1.22` 模块需要在编译时添加该模块。不过,如果不想重新编译 Nginx,可以尝试使用动态模块的方式加载 `fastdfs-nginx-module-1.22`,但前提是你的 Nginx 版本支持动态模块,并且在编译 Nginx 已经启用了动态模块支持。 下面是操作步骤和示例代码: #### 1. 检查 Nginx 是否支持动态模块 使用以下命令检查 Nginx 是否支持动态模块: ```bash nginx -V 2>&1 | grep dynamic ``` 如果输出中有 `--with-compat` 选项,说明 Nginx 支持动态模块。 #### 2. 编译 `fastdfs-nginx-module-1.22` 为动态模块 进入 `fastdfs-nginx-module-1.22` 目录,使用以下命令编译为动态模块: ```bash ./configure --with-compat --add-dynamic-module=/path/to/fastdfs-nginx-module-1.22/src make modules ``` 这里 `/path/to/fastdfs-nginx-module-1.22/src` 是 `fastdfs-nginx-module-1.22` 模块的源码目录。 #### 3. 复制动态模块文件 编译完成后,会在 `objs` 目录下生成动态模块文件(通常是 `.so` 文件),将其复制到 Nginx 的模块目录: ```bash cp objs/ngx_http_fastdfs_module.so /path/to/nginx/modules/ ``` `/path/to/nginx/modules/` 是 Nginx 的模块目录,可以通过 `nginx -V 2>&1 | grep modules-path` 查看。 #### 4. 配置 Nginx 加载动态模块 在 Nginx 配置文件(通常是 `nginx.conf`)中添加以下内容来加载动态模块: ```nginx load_module modules/ngx_http_fastdfs_module.so; ``` #### 5. 配置 `fastdfs-nginx-module-1.22` 在 Nginx 配置文件中添加 `fastdfs-nginx-module-1.22` 的相关配置,例如: ```nginx server { listen 80; server_name your_domain; location / { ngx_fastdfs_module; } } ``` #### 6. 重启 Nginx 配置完成后,重启 Nginx 使配置生效: ```bash nginx -s reload ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值