
これがメモリを消費している理由を理解するのに苦労しています。
私が試してみました;
- ARC がクリーンアップするための時間を増やす
- 渡すグローバルの __weak コピーの作成
- __bridge または __bridge_transfer の使用を検討しましたが、これは適切ではないと思います。
- グローバルを公開して直接参照する (機能しますが、実用的ではありません)
この iOS Objective c スレッドは、Java アプリから j2objc 0.9.3 を介して変換されます。
@implementation Comms_StatusThread
- (void)run {
while (true) {
    // Consumes memeory at aproximately 100k per 5 min
    [S globals];
    @try {
        [JavaLangThread sleepWithLong:10];
    }
    @catch (JavaLangInterruptedException *e) {
    }
}
この変換された静的シングルトンは、アプリ内のどこからでもアクセスできるように「グローバル」を格納します (実際のコードには、さらに多くのクラスとコールバックが格納されます)。
@implementation S
Globals * S_globals__ = nil;
+ (Globals *)globals {
    {
        if (S_globals__ == nil) S_globals__ = [[Globals alloc] init];
        return S_globals__;
    }
}
@end
どんな助けでも感謝します。私はobjective-cとARCが初めてです。ARC についてかなりの量を読みましたが、このメモリ消費の原因をまだ理解していません。
Student TIのおかげで、次のことを試しました。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(test:) userInfo:nil repeats:YES];
    return YES;
}
-(void) test: (NSObject*) o {
    [S comms];
    [S globals];
}
これはメモリを消費せず、これを行うことを計画していましたが、tball の新しい回答 (j2objc @AutoreleasePool を使用) が明らかに最良の選択肢であるため、そこから始めます。
ご回答ありがとうございます。